我面临着Golang的一个奇怪问题。
在init()
函数上,我想为我在该函数外声明的变量赋值。
但要将值赋给此var,我需要得到
error
检查一切是否正常。
以下是代码:
var retryValue time.Duration
func init() {
retryValue, err := time.ParseDuration(retries)
if err != nil {
log.Fatal("retries value is invalid", err)
}
}
func a(){
fmt.Println(retryValue)
}
我得到编译错误:
retryValue declared and not used
我需要将init()
更改为:
func init() {
var err error
retryValue, err = time.ParseDuration(retries)
if err != nil {
log.Fatal("retries value is invalid", err)
}
}
还有另一种方法可以解决这个问题吗?
:=
如果已经声明了其中一个变量,总是创建一个新变量?这是关于变量golang's sope?
谢谢!
答案 0 :(得分:2)
有两种基本方法可以做到这一点。你找到了一个:
var retryValue time.Duration
func init() {
var err error
retryValue, err = time.ParseDuration(retries)
if err != nil {
log.Fatal("retries value is invalid", err)
}
}
稍微短一些的方法是:
var retryValue = func() time.Duration {
rv, err := time.ParseDuration(retries)
if err != nil {
log.Fatal("retries value is invalid", err)
}
return rv
}()
但是比其中任何一个更好,只是直接指定值,而不是解析它:
var retryValue = 15 * time.Minute // or whatever value you want
答案 1 :(得分:-2)
您的修复确实是执行此操作的最短路径,并且没有其他方法可以解决此问题。
这个问题非常罕见,实际上它并不是一个真正的问题,毕竟它只是一条(短)线。