原文
译文
var语句用于声明变量列表,就像函数中的参数列表,类型放在最后。var语句可出现在包或函数级别,在下例中我们可看到这两种情况
package main
import "fmt"
var c, python, java bool
func main() {
var i int
fmt.Println(i, c, python, java)
}
变量在声明时可包含初始值,每个变量一个初始值。如果有初始值,可省略类型,变量将采用初始值类型。
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声明。在函数外,每条语句以一个关键字开头(var, func等),因此:=无法使用。
译者注
在Go中,同名变量可在包和函数级别同时声明,它们将互不影响,如下例中的i,j,c,python,java变量。 其中java在包级别被声明为布尔型,而在函数case3()级别则声明为字符串类型。
package main
import "fmt"
var c, python, java bool
var i, j = -1, -2
func case3() {
var i, j = 1, 2
k := 3
c, python, java := true, false, "No!"
fmt.Println(i, j, k, c, python, java)
}
func main() {
case3()
fmt.Println(i, j, c, python, java)
}
上面的程序将输出如下结果
1 2 3 true false No!
-1 -2 false false false
可以发现,及时函数内部声明了同名变量,也不会影响包级别变量的运行。