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

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

相关文章:

  • C#最佳实践:为何应减少嵌套
  • Adguard安卓版:全方位广告拦截与隐私保护
  • vue3 +spring boot文件上传
  • Compose Canvas 中添加手势控制
  • ​​信息系统项目管理师-项目范围管理 知识点总结与例题分析​​
  • Sa-Token全面深入学习指南
  • 敏捷开发的特点
  • 【 C++ 模板中 `template<typename T>` 与 `template<class T>` 的深度解析】
  • 基于STM32的超声波模拟雷达设计
  • SpringBoot 全面深入学习指南
  • 影视剧学经典系列-梁祝-《闲情赋》
  • 大模型笔记2:提示词工程
  • Spring Framework 7.0发布
  • 第十九章 Linux之Python定制篇——APT软件管理和远程登录
  • pyhton基础【10】容器介绍五
  • anaconda安装教程
  • 将CVAT点云格式标注格式由datumaro转换为kitti格式
  • 【IQA技术专题】-PSNR和SSIM
  • SylixOS armv7 任务切换
  • (二十八)深度解析领域特定语言(DSL)第六章——语法分析:巴科斯-诺尔范式
  • 设计类专业学校/seo站长工具推广平台
  • 衡阳做淘宝网站建设/看广告赚钱的平台
  • 天津企业网站排名优化/网络推广是什么
  • 做网站体会/百度问答平台
  • 网站程序源代码/高质量外链购买
  • 前几年做那些网站能致富/网络推广渠道排名