Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
## 变量的声明
#### 使用 var 关键字(函数内外都可使用)
```
// 只声明变量不赋值需要提供变量类型,默认值为0
1. var a, b int
// 字符串不能用单引号,可以不提供变量类型
2. var a, b string = "hello", "world"
// 省略变量的类型,根据值自行判定变量类型。
3. var a = 10
// 同时声明多种类型的变量
4. var (
a int,
b string,
c bool = true,
d = "hi"
)
```
如果声明了一个变量没有赋值,则该变量默认为零值,零值就是变量没有做初始化时系统默认设置的值。
- 数值类型(包括complex64/128)为 0
- 布尔类型为 false
- 字符串为 ""(空字符串)
- 以下几种类型为 nil:
```
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口
```
#### 使用 := 简短声明(仅函数内部可用)
- 使用 := 声明变量不能提供数据类型
- := 左侧如果没有声明新的变量,就产生编译错误
```
1. a := 1
2. a, b := 2, "hi" // 同时声明并赋值多个变量
var intVal int
intVal :=1 // 这时候会产生编译错误,因为 intVal 已经声明,不需要重新声明
```