变量作用域
当变量被声明后,它就进入了作用域(变量就变得可见了)。只要变量在作用域内,就可以访问它;否则,访问它会报错。
变量声明的位置,决定了它的作用域,范围就是 {} 之间的部分。作用域的好处是,可以在不同的作用域内使用相同的变量名。
Go 语言有两类变量:局部变量和全局变量。可以简单理解为:
- 局部变量:函数内声明的变量
- 全局变量:函数外声明的变量
{}
包括的区域,称为代码块,如果变量声明在{}
内部,只在代码块内有效。
局部变量
- 作用域只在函数内,函数参数和返回值变量也都属于局部变量
- 函数调用结束后局部变量会被销毁
- 局部变量声明后必须使用
go
package main
import "fmt"
func main() {
// 局部变量
a := 100
fmt.Println("局部变量 a =", a) // 局部变量 a = 100
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
全局变量
- 函数外声明的变量,必须使用 var 关键字来声明
- 作用域是当前包内,若想在包外使用,其首字母必须大写
- 全局变量与局部变量名称可以相同,但是函数内会优先考虑局部变量
- 全局变量可以声明不使用
go
package main
import "fmt"
// 全局变量
var a = 100
var b = 200
var c int // 声明不使用
func main() {
b = 300
fmt.Println("全局变量 a =", a) // 全局变量 a = 100
fmt.Println("局部变量 b =", b) // 局部变量 b = 300
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14