变量

var 语句 申明 ( declare )变量列表; 跟 函数 参数列表一样,类型在最后指定。

var 语句的作用域(可见范围)可以是 包级别 或者 函数级别 。 下面这个例子同时包含这两种级别:

/_src/tour/variables.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 package main

 import "fmt"

 var c, python, java bool


 func main() {
     var i int
     fmt.Println(i, c, python, java)
 }

作用域是啥意思呢?

以上述代码为例,变量 cpythonjava 的作用域是 包级别 , 意味着包内任何函数都可以访问这些变量; 定义在函数内部的 i 则是 函数级别 , 只有在 main 函数内部才能访问。

初始值

变量申明可以带初始值,一个变量一个。 在初始值存在的情况下,类型可以忽略;变量则继承初始值的类型。

/_src/tour/variables-with-initializers.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
package main

import "fmt"

var i, j int = 1, 2


func main() {
    var c, python, java = true, false, "no!"
    fmt.Println(i, j, c, python, java)
}

简式申明

在函数内部,可以用 := 赋值语句代替 var 变量申明语句, 变量类型也可以省略,这就是 简式申明

/_src/tour/short-variable-declarations.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
package main

import "fmt"


func main() {
    var i, j int = 1, 2
    k := 3
    c, python, java := true, false, "no!"

    fmt.Println(i, j, k, c, python, java)
}

在函数外部,每个语句都必须由一个关键字开始(如 varfunc 等), := 语句不可用。

下一步

下一节 我们一起来看看 Go 语言 基本类型

订阅更新,获取更多学习资料,请关注我们的 微信公众号

../_images/wechat-mp-qrcode.png

小菜学编程

微信打赏