Go中局部全局变量的区分
Posted phpper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go中局部全局变量的区分相关的知识,希望对你有一定的参考价值。
这是可能也许是容易混淆滴,先上1个例子:
package main import "fmt" var nickname = "大虾" func main() { show() //大虾 change() //小虾 show() //大虾 fmt.Print(nickname) //大虾 } func show() { print(nickname) } func change() { nickname := "小虾" print(nickname) }
上面会输出:
大虾大虾小虾大虾
我们稍微改动下:
package main import "fmt" var nickname = "大虾" func main() { show() //大虾 change() //小虾 show() //这里不再是 大虾 而是 虾 fmt.Println(nickname) //这里不再是 大虾 而是 虾 } func show() { print(nickname) } func change() { nickname = "小虾" // 注意这里不再是 nickname := "小虾" print(nickname) }
上面会输出:
大虾小虾小虾小虾
可见声明的全局变量var nickname 在函数change里面重载更新了,再次输出时已经是被更新后的值。
我们再看一个函数变量域
package main var nickname string func main() { nickname = "大虾" print(nickname) //大虾 change() println(nickname) //大虾 } func change() { nickname := "小虾" print(nickname) //小虾 show() //大虾 上面只是nickname := 只是初始化声明变量。仅在函数内有效,全局变量nickname未变 } func show() { print(nickname) }
上面会输出:
大虾小虾大虾大虾
通过上面几个例子,我想大家也应该哟深入的理解啦。
以上是关于Go中局部全局变量的区分的主要内容,如果未能解决你的问题,请参考以下文章
Golang✔️走进 Go 语言✔️ 第九课 局部变量 vs 全局变量
Golang✔️走进 Go 语言✔️ 第九课 局部变量 vs 全局变量