我有一个使用毒蛇的问题,我已经通过viper方法分配了变量,所以当我尝试在任何函数中获取值时,我有一个空值。有没有人知道为什么会这样?任何其他变量初始化工作正常,但不是viper GetString方法。Vi蛇,无法获得在函数外初始化的值
结构: main.go
package main
import (
"project/Model"
"github.com/spf13/viper"
...
)
func main() {
//Config handling
viper.SetConfigName("main")
viper.AddConfigPath("/config/")
err = viper.ReadInConfig()
...
}
封装模式
package Model
import ("github.com/spf13/viper"
...
)
var sqlhost = viper.GetString("db.host")
func foo() {
log.Println(sqlhost)
}
由于viper.GetString返回字符串(不是指针),它不会为空。你的意思是返回值是*空字符串*?首先,通过'viper.IsSet'检查密钥是否存在。 – putu
对不起,是的,字符串是空的。 Key存在,因为当我在func里面使用getString时,它给了我一个我需要的值。 –
这意味着viper.GetString在viper配置被初始化之前被调用,例如,通过'viper.ReadConfig'等。使用['init()'](https://stackoverflow.com/questions/24790175/when-is-the-init-function-run)函数。 – putu