Go并发编程实战
上QQ阅读APP看书,第一时间看更新

2.5 变量

在Go程序运行期间,变量值是可以被修改的。变量中的数据类型可以是布尔类型、数值类型和字符串类型,也可以是派生类型。Go语言中变量的声明语法为:

var 变量名 [数据类型] = 变量值
变量名 := 变量值

变量声明的关键词为var,后面跟着变量名(标识符),其中数据类型是可选的,但值不能省略。Go编译器可以根据变量的值来推断它的数据类型。变量声明有显式声明、隐式声明和短声明之分:

· 显式声明:var myVar string = "hello"。

· 隐式声明:var myVar = "hello"。

· 短声明:myVar := "hello"。

短声明和隐式声明的值不能省略,变量的类型由编译器自动确定。另外,我们可以在一行语句中同时声明多个同类型的变量,语法如下:

var 变量名1, 变量名2,...,变量名n= 变量值1,变量值2,...,变量值n

下面是变量基本用法的示例程序2-13。

示例程序2-13 变量基本用法:chapter02\code07\var.go

注意

短声明左边的变量可以是多个,但至少有一个是新声明的变量,其他的变量可以是在之前声明过(只用于赋值),否则会报编译错误。

在Go语言中,变量与常量不同,变量在函数体外进行声明时是不能进行赋值的,否则会报编译错误。为了验证这种说法,下面是变量在函数体外声明的示例程序2-14。

示例程序2-14 变量在函数体外声明:chapter02\code07\var2.go

在示例程序2-14中,第04行声明了一个整数类型的变量a,如果第06行取消注释,把2赋值给变量a,就会报错,因为在函数体外只能声明变量,而不能对变量进行赋值。第09行在main函数内部声明了一个和外部同名的变量a,并赋值为1,此时第11行在函数内部调用a的值则为函数内部的变量a,而不是函数体外的变量a。