我正在学习Go,但我觉得在编译时,我不应该留下任何未使用的变量或包,这有点烦人。
这真的让我慢下来了。例如,我只想声明一个新包并计划稍后使用它,或者只是取消某些命令的注释以进行测试。我总是得到错误,需要注释所有这些使用。
在围棋中,有什么方法可以避免这种检查吗?
我正在学习Go,但我觉得在编译时,我不应该留下任何未使用的变量或包,这有点烦人。
这真的让我慢下来了。例如,我只想声明一个新包并计划稍后使用它,或者只是取消某些命令的注释以进行测试。我总是得到错误,需要注释所有这些使用。
在围棋中,有什么方法可以避免这种检查吗?
当前回答
2年前我在学习围棋的时候遇到了这个问题,所以我声明了自己的函数。
// UNUSED allows unused variables to be included in Go programs
func UNUSED(x ...interface{}) {}
然后你可以这样使用它:
UNUSED(x)
UNUSED(x, y)
UNUSED(x, y, z)
它最大的好处是,你可以把任何东西都变成闲置的。
它比下面的好吗?
_, _, _ = x, y, z
这取决于你。
其他回答
2年前我在学习围棋的时候遇到了这个问题,所以我声明了自己的函数。
// UNUSED allows unused variables to be included in Go programs
func UNUSED(x ...interface{}) {}
然后你可以这样使用它:
UNUSED(x)
UNUSED(x, y)
UNUSED(x, y, z)
它最大的好处是,你可以把任何东西都变成闲置的。
它比下面的好吗?
_, _, _ = x, y, z
这取决于你。
据我所知,Go编译器中的这些行看起来像注释掉的那些行。您应该能够构建自己的工具链,忽略这些适得其反的警告。
当我想在处理代码的另一部分时暂时禁用发送电子邮件时,我遇到了这个问题。
注释服务的使用会触发很多级联错误,所以我使用了一个条件而不是注释
if false {
// Technically, svc still be used so no yelling
_, err = svc.SendRawEmail(input)
Check(err)
}
如果其他人很难理解这一点,我认为用非常直接的术语解释它可能会有所帮助。如果你有一个你不使用的变量,例如你已经注释掉调用的函数(一个常见的用例):
myFn := func () { }
// myFn()
你可以给函数赋值一个无用的/空白的变量,这样它就不再被使用了:
myFn := func () { }
_ = myFn
// myFn()
目前还没有提到的一个角度是用于编辑代码的工具集。
使用Visual Studio代码和lukehoban的名为Go的扩展将为你做一些自动魔术。Go扩展自动运行gofmt, golint等,并删除和添加导入项。所以至少这部分是自动的。
我承认这不是问题的100%解决方案,但无论如何足够有用。