博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go中局部全局变量的区分
阅读量:5160 次
发布时间:2019-06-13

本文共 992 字,大约阅读时间需要 3 分钟。

这是可能也许是容易混淆滴,先上1个例子:

package mainimport "fmt"var nickname = "大虾"func main() {    show() //大虾    change() //小虾    show() //大虾    fmt.Print(nickname) //大虾}func show() { print(nickname) }func change() {    nickname := "小虾"    print(nickname)}

上面会输出:

大虾大虾小虾大虾

我们稍微改动下:

package mainimport "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 mainvar nickname stringfunc main() {    nickname = "大虾"    print(nickname) //大虾    change()    println(nickname) //大虾}func change() {    nickname := "小虾"    print(nickname) //小虾    show() //大虾 上面只是nickname := 只是初始化声明变量。仅在函数内有效,全局变量nickname未变}func show() {    print(nickname)}

上面会输出:

大虾小虾大虾大虾

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

转载于:https://www.cnblogs.com/phpper/p/9934833.html

你可能感兴趣的文章
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>
菜鸟“抄程序”之道
查看>>
Ubuntu下关闭防火墙
查看>>
TCP/IP 邮件的原理
查看>>
原型设计工具
查看>>