1.变量声明

这些声明变量是等价的

  1. s := ""
  2. var s string
  3. var s = ""
  4. var s string = ""

1.1 简短变量声明 (s := “”)

只能在一个函数内部,而 package 级别的变量不应该这么做, 在package 级别这样声明变量,会报语法错误。

  1. 名字 := 表达式
  2. s := " "
  1. package main
  2. var s1 = "afaf"
  3. s2 := "afaf"
  4. func main() {
  5. println(s1)
  6. println(s2)
  7. }
  8. # command-line-arguments
  9. ./param_1.go:4:1: syntax error: non-declaration statement outside function body

1.2 var 声明语句

  1. var 变量名 类型
  2. var 变量名 = 表达式
  3. var 变量名 类型 = 表达式
  4. eg:
  5. var s string # 省略了 = "", 依赖于string类型的内部初始化机制,被初始化为空字符串。
  6. var s = "" # 省略了类型 string
  7. var s string = ""

其中,”类型” 或 “= 表达式” 两个部分可以省略其中的一个。
如果省略表达式, 那么将用零值初始化该变量。对应类型和初始化关系如下:

变量类型 初始化值
数值 0
布尔 false
字符串 “”, 空字符串
接口、引用(slice, map, chan 和函数) nil
数组或结构体等聚合类型 每个元素或字段对应的零值