码迷,mamicode.com
首页 > 其他好文 > 详细

Go中局部全局变量的区分

时间:2018-11-09 16:04:47      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:func   back   var   理解   show   ring   通过   更新   函数变量   

这是可能也许是容易混淆滴,先上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中局部全局变量的区分

标签:func   back   var   理解   show   ring   通过   更新   函数变量   

原文地址:https://www.cnblogs.com/phpper/p/9934833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!