变量作用域有以下几种情况:
- 局部变量:在函数或代码块内部声明的变量,只能在该函数或代码块内部访问。
- 全局变量:在函数或代码块外部声明的变量,作用于整个包,如果首字母大写则,可以在包内的任何地方访问,作用域在整个程序。
- 如果变量在一个代码块内被声明了,那么它的作用域就局限在这个代码块内,外部无法访问这个变量。
示例
package main
import "fmt"
var name = "全局变量" // 全局变量
var Name = "全局变量2" // 首字母大写的全局变量,可以被其他包访问
func main() {
fmt.Println(name) // 可以访问全局变量
fmt.Println(Name) // 可以访问首字母大写的全局变量
if true {
var localName = "局部变量" // 局部变量
fmt.Println(localName) // 可以访问局部变量
}
// fmt.Println(localName) // 错误: cannot refer to localName outside of its scope
}