Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。
变量是一段或多段用来存储数据的内存,在go中,变量一旦被定义,一定要使用,不然会报错
内建变量类型:
- bool
- string
- int、int8、int16、int32、int64 //有符号整数,8,16为整数长度
- uint、uint8、uint16、uint32、uint64、uintptr(指针) //无符号整数
- byte // uint8 的别名
- rune // int32 的别名 代表一个 Unicode 码
- float32、float64 //浮点数
- complex64、complex128 //复数
当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。
变量可写在函数(首个单词小写,每个新单词的首字母大写)内,在作用域内生效;也可写在函数外,作用于声明的package内。
标准格式: var 变量名 变量类型
简短格式: 变量名 := 表达式 (自动识别变量类型,只可用于函数内部)
批量格式: var ( dd = 3 ff = "avf" gg = true )
示例:
package main import "fmt" var aa = 1 var bb = false var cc = "abc" var ( dd = 3 ff = "avf" gg = true ) func variableZeroValue() { var a int var s string fmt.Printf("%d %q\n", a, s) } func variableInitialValue() { var a, b int = 3, 4 var s string = "abc" fmt.Println(a, b, s) } func variableTypeDeduction() { var a, b, c, d = 1, 2, true, "abc" fmt.Println(a, b, c, d) } func variableShorter() { a, b, c, d := 1, 2, true, "abc" b = 5 fmt.Println(a, b, c, d) } func main() { fmt.Println("hello world") variableZeroValue() variableInitialValue() variableTypeDeduction() variableShorter() fmt.Println(aa, bb, cc) fmt.Println(dd, gg, ff) } //输出 hello world 0 "" 3 4 abc 1 2 true abc 1 5 true abc 1 false abc 3 true avf