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

上面会输出:

大虾小虾大虾大虾

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

最新文章

  1. 微信小程序入门正确姿势(一)
  2. Windows 7 添加MBR文件启动
  3. Android 依赖注入 ButterKnife 基本使用
  4. 【HDOJ】 七百题留念
  5. Javascript学习4 - 对象和数组
  6. TRIZ系列-创新原理-28-替代机械系统原理
  7. java中的==、equals()、hashCode()源码分析
  8. 蓝桥杯-算法训练--ALGO-8 操作格子
  9. Luogu3613 睡觉困难综合征
  10. grant 权限 on 数据库对象 to 用户
  11. windows.onload和body的onload属性的区别
  12. 【AI】微软人工智能学习笔记(二)
  13. Zookeeper C++编程实战之主备切换
  14. JS 01 变量_数据类型_分支循环_数组
  15. LeetCode Anagrams My solution
  16. Mac 下安装Java
  17. MapReduce调度器
  18. 使用Eclipse搭建JavaWeb开发环境的几个基本问题
  19. telnet命令的使用
  20. 20145229吴姗珊《java程序设计》第2次实验报告

热门文章

  1. vue中添加title中的小图标
  2. 牛人的blog,关于推荐,topic model的
  3. Vue 单文件元件 — vTabs
  4. 搭建Windows故障转移群集
  5. 【安富莱】【RL-TCPnet网络教程】第11章 RL-TCPnet调试方法
  6. 阿里面试100%问到,JVM性能调优篇
  7. [Swift]LeetCode749. 隔离病毒 | Contain Virus
  8. C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法【转】
  9. Java 多线程(一)—— 概念的引入
  10. ModelFirst开发