Go语言 变量
变量是在编程语言中通过名字可以访问的一块内存空间,里面存储的数据可以在程序运行时修改。这个变量的名字称为变量名。
Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
1. 声明变量的语法
var identifier type
可以一次声明多个变量:
var identifier1, identifier2 type
package main import "fmt" func main() { var s string = test" fmt.Println(a) var a, b int = 1, 2 fmt.Println(a, b) }
以上实例输出结果为:
test 1 2
2. 声明变量的形式
1)变量指定类型,不指定初值
var v_name v_type
如果变量声明没有指定变量的初值,则变量值自动设置为系统默认值。不同的变量类型有不同的默认值。
package main import "fmt" func main() { // 字符串变量未指定初值,默认值为空 var a fmt.Println(a) // 整型变量未指定初值,默认值为0 var b int fmt.Println(b) // 布尔型变量未指定初值,默认值为false var c bool fmt.Println(c) }
以上实例执行结果为:
0 false
各类型变量的系统默认值:
- 数值类型为 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 interface{} // 接口
变量指定类型,不指定初值的范例:
package main import "fmt" func main() { var i int var f float64 var b bool var s string fmt.Printf("%v %v %v %v\n", i, f, b, s) }
输出结果是:
0 0 false ""
2)变量不指定类型,指定初值
var v_name = value
编译程序根据初值自行推断变量类型。
package main import "fmt" func main() { var d = true fmt.Println(d) }
编译程序推断变量d为布尔类型,输出结果是:true。
3)省略 var,通过赋值指定初值
v_name := value
编译程序根据初值自行推断变量类型。
可以将 var f string = "test" 简写为 f := "test":
package main import "fmt" func main() { f := "test" // var f string = "test" fmt.Println(f) }
输出结果是:test。
4)多变量声明
//类型相同多个变量, 非全局变量 var vname1, vname2 type vname1, vname2 = v1, v2 var vname1, vname2 = v1, v2 // 和 python 很像,不需要显示声明类型,自动推断 vname1, vname2 := v1, v2 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误 // 这种因式分解关键字的写法一般用于声明全局变量 var ( vname1 v_type1 vname2 v_type2 )
多变量声明的范例:
package main var x, y int var ( a int b bool ) var c, d int = 1, 2 var e, f = 123, "hello" //这种不带声明格式的只能在函数体中出现 //g, h := 123, "hello" func main(){ g, h := 123, "hello" println(x, y, a, b, c, d, e, f, g, h) }
以上实例执行结果为:
0 0 0 false 1 2 123 hello 123 hello
Go语言 常量:常量是在编程语言中,通过名字可以访问的一个数据,里面存储的数据在程序运行时不能修改。Go语言的常量关键字是const,常量的数值在编译阶段就已经确定。Go语言中常量的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。常量用于枚举。