Go 变量
变量是存放数据的命名空间,可以随时读取或修改。Go 提供多种声明方式。以下代码片段省略外壳,均可放入 main 函数运行。
1. var + 类型
先声明、后赋值:
var name string // 只声明,初值为零值 ""
name = "小明"
fmt.Println(name) // 输出: 小明
2. var + 类型 + 初值
声明同时赋值:
var age int = 25
var score float64 = 98.5
fmt.Println(age, score) // 输出: 25 98.5
3. 省略类型与短变量 :=
省略类型时由编译器推断;:= 声明并赋值一步完成,只能用于函数内:
var city = "北京" // 推断为 string
n := 100 // 等价于 var n = 100
fmt.Println(city, n) // 输出: 北京 100
4. 多变量同时声明
var a, b, c int = 1, 2, 3 // 同一类型
x, y := "Go", 3.14 // 不同类型,自动推断
fmt.Println(a+b+c) // 输出: 6
fmt.Println(x, y) // 输出: Go 3.14
5. 零值
只声明不赋值时自动取「零值」,而不是随机垃圾值:
| 类型 | 零值 |
|---|---|
| int 等数字 | 0 |
| float | 0.0 |
| string | "" |
| bool | false |
var n int
var s string
var ok bool
fmt.Println(n, s == "", ok) // 输出: 0 true false
6. 类型转换
Go 不允许隐式类型转换,必须显式写成 T(表达式):
a, b := 97, 3.7
c := float64(a) // int 转 float64
d := int(b) // 小数被丢弃,得 3
e := string(rune(a)) // 数字 97 转字符 'a'
fmt.Println(c, d, e) // 输出: 97 3 a
小结
声明变量用 var 或 :=(仅函数内);牢记零值机制;跨类型转换务必显式写出,避免编译报错。