英文:
Why is lint giving a warning ineffectual assignment to (ineffassign)
问题
在第2行的代码cfg := &utils.Config{}
中,你遇到了一个名为ineffectual assignment to "cfg"
的lint警告。为什么会出现这个警告呢?
这个警告是因为在后面的代码中,你对cfg
进行了重新赋值。在第5行和第8行,根据条件不同,你将cfg
重新赋值为utils.GetIntConfig()
或utils.GetConfig()
。因此,初始的赋值cfg := &utils.Config{}
实际上是无效的,因为后面的赋值会覆盖它。
如果你想避免这个lint警告,可以将初始赋值改为var cfg *utils.Config
,然后在后面的代码中使用cfg = &utils.Config{}
进行赋值。这样,初始赋值就不会被认为是无效的了。以下是修改后的代码:
var cfg *utils.Config
env := os.Getenv("TEST")
if strings.EqualFold(env, "INT") {
cfg = utils.GetIntConfig()
} else {
cfg = utils.GetConfig()
}
cgw.Cgw(cfg)
这样修改后,你就不会再收到ineffectual assignment to "cfg"
的lint警告了。
英文:
Getting a lint warning ineffectual assignment to "cfg"
at line cfg := &utils.Config{}
. Why is that ?
cfg := &utils.Config{}
env := os.Getenv("TEST")
if strings.EqualFold(env, "INT") {
cfg = utils.GetIntConfig()
} else {
cfg = utils.GetConfig()
}
cgw.Cgw(cfg)
答案1
得分: 44
在以下的if
语句之后,cfg
被赋值,因此使用cfg := &utils.Config{}
给cfg
赋值的值从未被使用。你可以使用声明来代替赋值。
var cfg *utils.Config
...
英文:
After the following if
statement, cfg
is written, thus the value assigned to cfg
using cfg := &utils.Config{}
is never used. You are using an assignment where a declaration would do.
var cfg *utils.Config
...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论