Logo
Section 1 / 7

变量

了解 Go 语言中的变量。

导入

变量

了解 Go 语言中的变量。

未使用的变量

包含未使用变量的 Go 程序无法编译:

“存在未使用的变量可能表明代码中存在错误……Go 不允许编译包含未使用变量或导入的程序,以牺牲短期便利性来换取长期的构建速度和代码清晰度。”
https://golang.org/doc/faq

该规则有例外情况:全局变量和函数参数可以不被使用:

1package main 2var unusedGlobal int // 这是允许的 3func f1(unusedArg int) { // 未使用的函数参数也是允许的 4 // 错误:声明了但未使用 5 a, b := 1, 2 6 // b 在此处被使用,但 a 只被赋值,不算“已使用” 7 a = b 8}

短变量声明

短变量声明只能在函数内部使用:

1package main 2v1 := 1 // 错误:非声明语句不能出现在函数体外 3var v2 = 2 // 这是允许的 4func main() { 5 v3 := 3 // 这是允许的 6 fmt.Println(v3) 7}

短变量声明也不适用于设置结构体字段值的情况:

1package main 2type myStruct struct { 3 Field int 4} 5func main() { 6 var s myStruct 7 // 错误:左边不能是 s.Field 这样的表达式 8 s.Field := 1 9 var newVar int 10 s.Field, newVar = 1, 2 // 这实际上是允许的 11}

Go语言基础

变量遮蔽