变量声明
var name type = expression
举例
num1 := 123
fmt.Println(num1)
num2 := 0132 // 八进制
fmt.Println(num2)
num3 := 0xa2c // 十六进制
fmt.Println(num3)
// 多变量声明
var r, t, s = 100, 3.14, "memeda"
// r, t, s := 200, 3.14, "heheda"
fmt.Println(r, t, s)
var (
y = 20
z = 30
)
fmt.Println(x, y)
短变量声明
在函数中,短变量声明用来声明和初始化局部变量
name := expression
要注意,
:=
表示声明,=
表示赋值,多重赋值不能和多变量声明搞混了。- 短变量不需要声明所有左边的变量,对于那些不要声明的变量来说,短声明就等同赋值
- 短变量声明中最少声明一个新变量,否则代码无法编译通过
f, err := os.Open(file)
// ...
f, err := os.Open(file) // compile error
重新声明与再次赋值
在满足下列条件时,已被声明的变量 v 可出现在:=
声明中:
- 本次声明与已经声明的 v 处理同一作用域中(若v已在外层作用域中声明过,则此次声明会创建一个新的变量)
- 在初始化中与其类型相应的值才能赋予v, 且
- 在此次声明中至少另有一个变量是新声明的。
这个特性简直就是纯粹实用主义的体现,它使得我们可以很方便地只使用一个err值,例如,在一个相当长的if-else
语句链中,你会发现它用得很频繁。