为什么兽医抱怨这个变量被声明但没有被使用?

Why does vet complain that this variable is declared but not used?

考虑以下 Go 程序:

package main

func a(fn func()) {
    fn()
}

func main() {
    var b int
    a(func() {
        b = 12
    })
}

(run above program on Go Playground)

b 在第 8 行声明,并在第 10 行赋值。但是,vet 报告如下:

vet.exe: test.go:8:2:
  b declared but not used

如果确实使用了为什么会出现警告?

变量的值从未被访问过:仅被修改过。因此,该变量永远不会产生任何效果。

只有当变量对程序的行为有某些指定的影响时,该变量才被视为“已使用”。

试试这个,警告就会消失。

func main() {
    var b int
    a(func() {
        b = 12
    })
    
    // Accessing the value "b"
    fmt.Println(b)
}