go语言之变量

不问归期 提交于 2020-03-12 11:51:14

在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"
)

上面的这种写法一般用来进行批量的声明变量,这种写法无论是在包内还是函数内都是被允许的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!