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 全局变量

js中局部变量和全局变量的问题

Golang基本语法

JS全局变量是全局对象的属性,函数局部变量为啥就不是函数的属性呢?

Go的变量作用域