前言
viper 支持Yaml、json、 TOML、HCL 等格式,读取非常的方便。
安装
go get github.com/spf13/viper
如果提示euxYS找不到golang.org/x/text/这个库,是因为golang.org/x/text/这个库在GitHub上托管的路径不一致。
解决办法:
可以从https://github.com/golang/text下载源码下来,然后到$GOPATH/src下面创建golang.org/x/文件夹(已存在的忽略),把压缩包的文件解压到golang.org/x/文件夹之下。
然后执行 euxYSgo install -x golang.org/x/text 即可解决:
正文
初始结构目录如下:
准备测试使用的yaml文件,注意yaml的格式十分严格,主要是每个冒号后面必须要有空格,数组前要加“-”号表示连续(注意减号后面也有空格),内容如下:
读取yaml文件:
也可以直接反序列化为Struct,非常的方便:
viper也提供了读取Command Line参数的功能:
很多时候,我们服务器启动之后,如果临时想修改某些配置参数,需要重启服务器才能生效,但是viper提供了监听函数,可以免重启修改配置参数,非常的实用:
完结
viper还有许多好用的功能,此文章只是举例说明了很小的部分。
补充:viper-配置信息处理框架(golang)
项目地址https://github.com/spf13/viper
1. viper
viper读取配置信息的优先级顺序,从高到底:
显式调用Set函数
命令行参数
环境变量
配置文件
key/value存储系统
默认值
2. 设置值
(1)设置默认值
viper.SetDefault("ContentDir", "content")
...
(2)读取配置文件
(3)***监视配置文件
viper支持应用程序运行时拥有读取配置文件的能力
viper实例通过WatchConfig函数:
(4)Set调用
viper.Set("Verbose", true)
viper.Set("LogFile", LogFile)
(5)绑定命令编程客栈行参数
***viper支持绑定pflags参数【pflags是一个命令行参数解析库】
serveCmd.Flags().Int("port", 1138, "Port to run Application server on")
viper.BindPFlag("port", serverCmd.Flags().Lookup("port"))
3. 获取值
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。