Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。Go 语言中关键字和保留字都不能用作变量名。Go 语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且 Go 语言的变量声明后必须使用。
1. var 声明变量
在 Go 语言中,最基本的变量声明方式是使用 var 关键字,声明语法是 var 变量名 类型。
var name string
这种形式声明了一个名为 name 的字符串类型变量。声明后可以赋值:
var name string
name = "Go语言"
也可以声明时直接初始化:
var name string = "Go语言"
2. 一次定义多个变量
Go 语言允许一次声明多个变量:
var a, b, c int
这等同于:
var a int
var b int
var c int
多个变量可以在同一行声明并初始化:
var a, b, c = 1, 2, 3
3. 批量声明变量的时候指定类型
当需要声明多个不同类型的变量时,可以使用批量声明的方式:
var (name stringage intisOk bool
)
也可以为批量声明的变量指定相同的类型:
var (x, y, z inta, b, c string
)
4. 变量的初始化
在 Go 语言中,变量声明时可以同时初始化:
var name string = "Alice"
var age int = 25
如果初始化值存在,可以省略类型,Go 会根据初始值自动推断类型:
var name = "Alice" // 自动推断为string类型
var age = 25 // 自动推断为int类型
5. 类型推导
Go 语言的类型推导功能可以让我们在声明变量时省略类型:
var name = "Bob" // 自动推导为string类型
var age = 30 // 自动推导为int类型
var pi = 3.14 // 自动推导为float64类型
Go 会根据右侧的值自动推导出最合适的类型。
6. 短变量声明法
在函数内部,可以使用更简洁的短变量声明方式。
name := "Charlie"
age := 35
这种方式会隐式声明变量并赋予初始值,类型由初始值自动推导。短变量声明是 Go 语言中最常用的变量声明方式。
注意:短变量声明只能在函数内部使用,不能在包级别使用。
7. 匿名变量
Go 语言支持匿名变量,也称为空白标识符,用下划线 _
表示:
_, b := 5, 7
匿名变量不占用命名空间,不会分配内存,通常用于忽略不需要的返回值。例如:
result, _ := someFunction() // 忽略第二个返回值
8. 注意事项
1. 变量必须先声明后使用:Go 语言不允许使用未声明的变量;
2. 变量不能重复声明:在相同作用域内,变量名不能重复声明;
3. 短变量声明的特殊规则:
(1). 短变量声明至少需要声明一个新变量;
(2). 可以这样使用:a, b := 1, 2 或 a, b := someFunction();
(3). 但不能全是已声明的变量:a, b := 1, 2 后不能 a, b := 3, 4;
4. 零值机制:Go 语言中声明的变量会自动初始化为其类型的零值:
(1). 数值类型为 0;
(2). 布尔类型为 false;
(3). 字符串为 " "(空字符串);
(4). 指针、函数、接口、slice、channel、map 为 nil;
5. 作用域规则:变量只在声明它的代码块内有效;
6. 包级变量:在函数外声明的变量是包级变量,作用域是整个包;
7. 变量命名:Go 语言推荐使用驼峰命名法,且尽量使用有意义的名称;
通过掌握这些变量声明方式,可以更灵活地在 Go 程序中使用变量,编写出更清晰、更高效的代码。