我有一個使用毒蛇的問題,我已經通過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