当前位置: 首页 > backend >正文

GO语言---短变量声明

文章目录

  • 基本语法
  • 功能特点
  • 与var的区别
  • 适用场景
  • 注意事项

在 Go 语言中,短变量声明(Short Variable Declaration) 是一种简洁的变量声明方式,使用 := 运算符,可以自动推断变量类型。

基本语法

variableName := value

功能特点

1、自动类型推断:编译器会根据右侧的值自动推断变量类型。

x := 42      // int
y := "hello" // string
z := 3.14    // float64

2、只能用于局部变量:只能在函数或方法内部使用,不能在全局(包级别)使用。
3、可以同时声明多个变量。

a, b := 1, "two"

4、至少声明一个新变量:在 := 左侧的变量中,至少有一个必须是新变量(未声明过的),否则会报错。

x := 10
x, y := 20, 30  // 正确,因为 y 是新变量
x, y := 40, 50  // 错误:no new variables on left side of :=

与var的区别

特性:=(短变量声明)var 声明
作用域仅限函数内部全局或局部均可
类型推断可自动推断可自动推断
显式类型声明不可指定可指定(var x int = 10)
多变量声明支持(a, b := 1, 2)支持(var a, b = 1, 2)
重新声明限制至少一个新变量不能重复声明(同一作用域)

适用场景

1、函数内部快速声明变量

func main() {name := "Alice"  // 自动推断为 stringage := 30        // 自动推断为 intfmt.Println(name, age)
}

2、多返回值函数的接收

func getData() (int, string) {return 100, "OK"
}func main() {code, msg := getData()  // 自动推断 code(int), msg(string)fmt.Println(code, msg)
}

3、if、for 等语句中的临时变量

if n := 10; n > 5 {fmt.Println("n is greater than 5")
}

注意事项

1、不能在全局使用

package mainx := 10  // ❌ 错误:syntax error: non-declaration statement outside function bodyfunc main() {y := 20  // ✅ 正确
}

2、不能用于已声明的变量(除非至少一个新变量)

func main() {a := 10a := 20  // ❌ 错误:no new variables on left side of :=a, b := 20, 30  // ✅ 正确,因为 b 是新变量
}

3、类型一旦确定,不能更改

x := 10
x = "hello"  // ❌ 错误:cannot use "hello" (untyped string constant) as int value
http://www.xdnf.cn/news/14497.html

相关文章:

  • 手写简版React-router
  • DeepSeek提示词指南:从基础到高阶的全面解析
  • 160. 相交链表
  • MGR集群场景恢复处理
  • LoRA 与传统矩阵分解的比较
  • Ubuntu24.04一键安装ROS2
  • PoE供电异常如何排查?
  • React-router 基础使用
  • Markdown 使用 mermaid 绘制图
  • 基于Webserver的数据采集
  • Redis Cluster集群机制原理
  • 安卓9.0系统修改定制化____支持安卓9.0系统修改的一些解包 打包工具解析 基础篇 三
  • TC3xx学习笔记-启动过程详解(二)
  • 最新文章 支持一下!!
  • Datawhale---AI办公实践与应用---Cpt2-用讯飞智文做一个小案例
  • 一个高质量的社交电商APP客户端UI解决方案
  • Nginx 配置中·IP地址变量
  • 深度学习的优化⽅法
  • 李沐--动手学深度学习 LSTM
  • 父亲节:传承孝道,守护亲情
  • MySQL 数据库自动备份批处理工具介绍
  • Vue 项目路由模式全解析:从 hash 到 history 再到 abstract
  • Podman 安装与运行 Nginx 容器完整指南(含访问验证)
  • 北斗导航 | 基于matlab的提升卫星导航单点定位精度的算法总结
  • 2022年以来大模型技术及生态发展汇总文档
  • MongoDB文档查询:从基础到进阶的探索之旅
  • 【Dify系列】【一】【安装与部署】【ubuntu22.04安装docker部署dify1.4.2】
  • 先理解软件工程,再谈AI辅助研发
  • 如何在软件公司推行狼性文化?可能存在哪些困难?
  • VSCODE + EIDE 下 STM32 编程使用部分外设无法通过编译:undefined reference to ‘xxx‘