golang 读取配置文件vipper

golang 读取配置文件vipper读取配置文件的 有 toml 和 vipper 两种好用的方法 toml 的方法见 https blog csdn net fwhezfwhez article details 最大的特点就是要为配置文件构建相对应的结构体 有点囧 现在讲一个 vipper

读取配置文件的,有toml和vipper两种好用的方法,toml的方法见:
golang 读取配置文件vipper
最大的特点就是要为配置文件构建相对应的结构体,有点囧,现在讲一个vipper。

config.go

package config import ( "fmt" "github.com/fsnotify/fsnotify" "github.com/fwhezfwhez/errorx" "os" "sync" "github.com/spf13/viper" ) var config *viper.Viper var m sync.Mutex // Init 初始化配置 func init() { 
    var env string if env = os.Getenv("ENV"); env=="" { 
    env = "dev" } v := viper.New() v.SetConfigType("yaml") v.SetConfigName(env) v.AddConfigPath("../config/") v.AddConfigPath("config/") ReadConfig(v) v.WatchConfig() v.OnConfigChange(func(e fsnotify.Event) { 
    fmt.Println("Config file changed:", e.Name) }) config = v } // GetConfig 获取配置 func GetConfig() *viper.Viper { 
    return config } func ReadConfig(v *viper.Viper) error{ 
    m.Lock() defer m.Unlock() err := v.ReadInConfig() if err != nil { 
    return errorx.NewFromString("Error on parsing config file!") } return nil } 

config_test.go

package config import ( "testing" ) func TestGetConfig(t *testing.T) { 
    c := GetConfig() addr := c.GetString("addr") fmt.Println(addr) host := c.GetString("db.host") fmt.Println(host) time.Sleep(20 * time.Second) // 这时候去修改 dev.yaml } 
addr: :8090 debugPort: :8091 db: host: localhost port: 5432 

执行config_test 文件:

=== RUN TestGetConfig :8090 localhost Config file changed: G:\go_workspace\GOPATH\src\cdd-platform-srv\config\dev.yaml 
今天的文章 golang 读取配置文件vipper分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-07 12:33
下一篇 2025-01-07 12:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/104395.html