我使用毒蛇有问题,我已经通过viper方法分配变量,所以当我尝试在任何函数中获取值时,我有一个空值。有人知道为什么会这样吗?任何其他变量初始化工作正常,但不是viper GetString方法。
结构: 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)
}
答案 0 :(得分:0)
我怀疑在显示时执行包变量初始化将导致viper配置在执行GetString()
之前未完成,因此零(空)字符串值是返回的值。在没有看到你如何初始化你的viper配置的情况下,我猜测它不在init()
函数中,而是在main()
函数中,当时它还没有运行包变量已分配。
您应该检索需要它的最高级别函数内的viper.GetString("db.host")
,而不是在程序包初始化期间。