在go语言中,声明一个变量格式如下:
var varname vartype
varname 表示变量名,vartype表示变量的类型。
例如,下面的代码中创建了两个变量。
var i1 int
var s1 string
fmt.Printf("%d %q \n",i1,s1) // 0 ""
上面的代码中,创建了两个变量i1 和 s1 ,并且还没有初始化。
在go语言当中,一个变量创建后但是如果没有初始化,那么就会默认的为当前变量类型的零值。例如i1的类型为int,打印出来的结果为int类型的零值0,s1的类型为string,打印出来的结果为string类型的零值""。
我们可以在变量声明的时候进行初始化,如下:
var i1 int = 3
var s1 string = "hello"
fmt.Println(i1,s1) // 3 hello
上述的代码不仅仅创建了变量,还对变量进行了初始化的设置。
在go语言当中是支持同时创建多个变量并且同时赋值,如下:
var i1 , i2 int = 3, 4
fmt.Println(i1,i2) // 3 4
上述变量在创建的初期就同时完成了初始化的设置。
在go中,允许在声明变量的时候不去设置类型,如下:
var i1, s1 = 3 , "hello,world"
fmt.Println(i1,s1) // 3 hello,world
在上面的代码中,在一个var关键字后面同时创建了两个变量i1和s1,并且同时进行了初始化,但是需要注意的是,两个变量的声明并没有设置类型。
这种写法在go语言中是允许的,go会自动的根据初始化的值来推断变量的类型。
需要注意的是,如果在创建变量的时候规定了类型,那么不同类型的变量是不能够在一行同时声明的。
在go语言当中还支持更加简洁的写法,如下:
i1,s1 := 2,"hello"
fmt.Println(i1,s1) // 2 hello
// 如果重新进行赋值,那么就不能使用:= 需要使用 =
s1 = "world"
fmt.Println(s1) // world
在上面的代码中,创建变量使用的是一种更简洁的变量声明方式,省略了var 关键字和类型,这种写法需要在等号前加上一个: 。
需要注意的是,当给一个已经声明并且已经初始化的变量进行重新赋值时,是不能够再次使用:= ,而应该使用=。
在go语言当中,如果在函数外部创建变量,必须要通过var 关键字来创建变量。
var a = 10
var s = "hello"
func main() {
fmt.Println(a,s) // 10 "hello"
}
在上述代码中,在main函数的外部创建两a和s两个变量,一定要注意,在函数外部创建变量必须加var,否则没有办法进行编译。
在go语言当中,还允许我们对变量的声明进行统一批次声明,如下:
var (
a = 1
s = "hello"
)
上面的这种写法一般用来进行批量的声明变量,这种写法无论是在包内还是函数内都是被允许的。
来源:CSDN
作者:蓬塔阿雷纳斯的树
链接:https://blog.csdn.net/weixin_44568935/article/details/104811450