我们可以在函数之外定义一个变量,这些被称为GoLang全局变量。这些变量可以被包内的任何函数访问。
GoLang全局变量实例
让我们看一下GoLang中全局变量的一个简单例子。
package main
import "fmt"
var x = 10
func main() {
fmt.Println(x)
foo()
}
func foo() {
fmt.Println(x * 2)
}
当你执行上述代码时,输出结果将是:
10
20
全局变量是可编辑的
Go中的全局变量是可编辑的。任何函数中的代码都可以编辑全局变量。
package main
import "fmt"
var x = 10
func main() {
fmt.Println(x)
x = 20 // editing global variable
foo()
}
func foo() {
fmt.Println(x)
}
输出结果:
10
20
全局变量和局部变量的偏好
GoLang允许在作用域不同的情况下使用相同名称的变量。所以,我们也可以在函数里面定义一个名为'x'的变量。在这种情况下,哪个变量将获得优先权?
本地变量将比全局变量获得更多的优先权。
package main
import "fmt"
var x = 10
func main() {
x = 50 // local variable of same name
fmt.Println(x) // prints 50
}
全局变量 - 使用或不使用
- 全局变量的最大问题是它们是可编辑的。很有可能一些无意的代码会编辑全局变量并在程序中产生不必要的错误。
- 我认为全局变量唯一有意义的时候是当它是一个常数,而且会被许多函数使用。例如,PI或自然对数基数。