go - 不了解变量
问题描述
我对变量感到困惑。情况1:
package main
var a = "F"
func main() {
n()
m()
n()
}
func n() {
print(a)
}
func m() {
a = "O"
print(a)
}
结果 = FOO
但是当我改变a = "O"
(var a = "O"
或a := "O"
)结果是FOF。
解决方案
var a = "O"
并且a := "O"
都声明了新变量。这意味着a
内部变量与全局变量m
不同a
,因此将其设置为O
不会更改全局变量的值。
如果它们在不同的范围内,您可以像这样隐藏变量,在这种情况下就是这样。
一个在全局范围内,一个在m
函数范围内。
推荐阅读
- sql - 使用 SQL 比较 2 个 url 主机名
- javascript - 在 Gatsby 中使用链接标签将样式注入 DOM
- python - Python Openpyxl:如何停止推理或覆盖单元格数据类型
- android - 如何使用设计略有不同的相同自定义视图?
- vba - VBA 将行数据移动到其相关工作表,但如果发现重复行,则跳过该行
- javascript - 获取参数并将其用作 Javascript 中的数组名称
- django - Django sum 对象过滤另一个模型
- javascript - 为什么我不能从 jsp 中的嵌入文件执行代码?
- sql-server - 在 Microsoft SQL Server 上加载图像文件
- system-verilog - 对不同的地址范围使用隐含运算符