Go已声明但未使用逻辑

  • 本文关键字:未使用 声明 Go go
  • 更新时间 :
  • 英文 :


举一个非常简单的例子。其示出了块内和块外的变量分配。

在编译时,这导致: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, err := url.Parse("http://bing.com/search?q=dotnet")

在这行代码中,您有块范围的变量u,它与在第var u string行中声明的变量不同,因此出现了此错误。
此外,在这里,您有来自外部块范围的变量u的阴影,这可能会导致错误,请参阅:

var u string
u = "blank"
{
u, err := url.Parse("http://bing.com/search?q=dotnet")
if err != nil {
log.Fatal(err)
}
log.Printf("%#v", u)
}
log.Printf("%#v", u)

结果将是:

2018/11/21 19:12:33 &url.URL{Scheme:"http", Opaque:"", User:(*url.Userinfo)(nil), Host:"bing.com", Path:"/search", RawPath:"", ForceQuery:false, RawQuery:"q=dotnet", Fragment:""}
2018/11/21 19:12:33 "blank"

正如您在这里看到的,您甚至有不同的数据类型,并且变量u在这个块之后没有改变。

最新更新