• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go中局部全局变量的区分

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这是可能也许是容易混淆滴,先上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)
}

上面会输出:

大虾小虾大虾大虾

通过上面几个例子,我想大家也应该有深入的理解啦。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言使用delete()函数从map中删除键值对发布时间:2022-07-10
下一篇:
GO语言-基础语法:条件判断发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap