- 变量的作用域
-
- 变量的作用域有几种:
- 包间变量:也是在函数外声明的变量,而且第一个字母是大写,所有本包函数或者包外函数都可见
- 全局变量:在函数外声明的变量,所有函数都可见
- 局部变量:在本函数内部都可见
- 块变量:仅仅在某个块中可见,比如在某个if块/for循环块中可见
- 覆盖原则:小范围的同名变量会覆盖大范围的同名变量,也就是:
- 块变量 会覆盖 局部变量和全局变量
- 局部变量 会覆盖 全局变量
- 包间变量 访问时需要带包名,属于指定调用了
- 举例:
- 源代码:
//声明全局变量
var m = 100
func main() {
fmt.Printf("m = %d\n", m)
func1()
func2()
}
func func1() {
//声明局部变量
var m = 200
fmt.Printf("m = %d\n", m)
}
func func2() {
fmt.Printf("m = %d\n", m)
} - 结果显示:
m = 100 显示的是全局变量
m = 200 显示的是局部变量,局部变量覆盖全局变量
m = 100 显示的是全局变量
- 源代码:
- 变量的作用域有几种: