【发布时间】:2018-11-22 01:56:00
【问题描述】:
以这个非常简单的例子为例。它显示了一个块内外的变量赋值。
编译时结果为:u declared and not used
var u string
{
u, err := url.Parse("http://bing.com/search?q=dotnet")
if err != nil {
log.Fatal(err)
}
}
log.Debug(u)
这模拟了一个逻辑块,在此期间我们可能会评估几件事情并根据逻辑评估将 var 设置为我们喜欢的值。这怎么可能?
【问题讨论】:
-
正如所说的那样,块内声明的
u未被使用(实际错误会告诉您确切的行)。这里没有什么神奇之处,错误可能使您免于代码中的错误。 -
短变量声明将创建新的
u和err变量,因为u没有在同一个块中声明。只有在同一块中声明变量时,才会发生重新声明。 -
不敢相信没有人用一句话来清除一切:
u, err :=是在一个块内声明和分配u和err,屏蔽 在更高范围内声明的var u string。
标签: go