变量声明

  1. var name type = expression

举例

  1. num1 := 123
  2. fmt.Println(num1)
  3. num2 := 0132 // 八进制
  4. fmt.Println(num2)
  5. num3 := 0xa2c // 十六进制
  6. fmt.Println(num3)
  7. // 多变量声明
  8. var r, t, s = 100, 3.14, "memeda"
  9. // r, t, s := 200, 3.14, "heheda"
  10. fmt.Println(r, t, s)
  11. var (
  12. y = 20
  13. z = 30
  14. )
  15. fmt.Println(x, y)

短变量声明

函数中,短变量声明用来声明和初始化局部变量

  1. name := expression

要注意,

  • :=表示声明,=表示赋值,多重赋值不能和多变量声明搞混了。
  • 短变量不需要声明所有左边的变量,对于那些不要声明的变量来说,短声明就等同赋值
  • 短变量声明中最少声明一个新变量,否则代码无法编译通过
  1. f, err := os.Open(file)
  2. // ...
  3. f, err := os.Open(file) // compile error

重新声明与再次赋值

在满足下列条件时,已被声明的变量 v 可出现在:=声明中:

  • 本次声明与已经声明的 v 处理同一作用域中(若v已在外层作用域中声明过,则此次声明会创建一个新的变量
  • 在初始化中与其类型相应的值才能赋予v, 且
  • 在此次声明中至少另有一个变量是新声明的。

这个特性简直就是纯粹实用主义的体现,它使得我们可以很方便地只使用一个err值,例如,在一个相当长的if-else语句链中,你会发现它用得很频繁。