代码非常简单,意图就是想自己初始化以及封装viper,我想在 main.go 或其他目录内的文件实现用一下方式访问配置:
```
// 想实现的方式
config.GetString("appName") 或 Cfg.GetString("appName")
// 目前之能是这样访问配置
config.Cfg.GetString("appName")
```
*我知道思路错了,可不知道错在哪,从其他的变成经验来说,导出Cfg,并引入命名空间,就可以使用这个导出的变量(对象)了,请指教*
全部源代码如下:
```
// 位置:main.go
package main
import (
"app/pkg/config"
"fmt"
)
func main() {
fmt.Println("The app name:", config.Cfg.GetString("appName"))
}
```
```
// 位置:/pkg/config/config.go
package config
import (
"fmt"
"github.com/fsnotify/fsnotify"
"github.com/spf13/viper"
)
var Cfg *viper.Viper
func init() {
Cfg = viper.New()
Cfg.AddConfigPath(".")
Cfg.SetConfigName("config")
Cfg.SetConfigType("yaml")
err := Cfg.ReadInConfig()
if err != nil {
panic(fmt.Errorf("读取配置文件失败: %s \n", err))
}
Cfg.WatchConfig()
Cfg.OnConfigChange(func(e fsnotify.Event) {
fmt.Println("Config file changed:", e.Name)
})
}
```
有疑问加站长微信联系(非本文作者)