为什么 lint 给出了一个警告 “ineffectual assignment to (ineffassign)”?

huangapple go评论74阅读模式
英文:

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
...

huangapple
  • 本文由 发表于 2021年6月23日 13:17:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/68093875.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定