从零开发区块链应用 (一)--golang 配置文件管理工具 viper
参考文件:https://github.com/spf13/viper
一、viper 简介
viper 是一个 go 开发工具,主要是用于处理各种格式的配置文件,简化程序配置的读取问题,所以 viper 是一个配置解决方案,它拥有丰富的特性:
支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件;
可以设置监听配置文件的修改,修改时自动加载新的配置;
从环境变量、命令行选项和
io.Reader
中读取配置;从远程配置系统中读取和监听修改,如 etcd/Consul;
代码逻辑中显示设置键值。
二、viper 的基本方法
2.1 安装
2.2 读取配置文件
Viper 需要最少知道在哪里查找配置文件的配置。Viper 支持JSON
、TOML
、YAML
、HCL
、envfile
和Java properties
格式的配置文件。Viper 可以搜索多个路径,但目前单个 Viper 实例只支持单个配置文件。Viper 不默认任何配置搜索路径,将默认决策留给应用程序。
下面是一个如何使用 Viper 搜索和读取配置文件的示例。不需要任何特定的路径,但是至少应该提供一个配置文件预期出现的路径。
在加载配置文件出错时,你可以像下面这样处理找不到配置文件的特定情况:
2.3 viper 取值的函数
Get(key string) : interface{} //自动判断类型
GetBool(key string) : bool //获取 bool 类型
GetFloat64(key string) : float64 //获取浮点
GetInt(key string) : int //获取 int 类型
GetString(key string) : string //获取 string 类型
GetIntSlice(key string) : []int //获取 slice 类型(slice 类型为 int)
GetStringSlice(key string) : []string //获取 slice 类型(slice 类型为 string)
GetStringMap(key string) : map[string]interface{} // 获取 map 类型(map 自动判断类型)
GetStringMapString(key string) : map[string]string //获取 map 类型(map 类型为 string 类型)
GetTime(key string) : time.Time // 获取时间类型
GetDuration(key string) : time.Duration //获取持续时间
IsSet(key string) : bool //判断某个键值是否存在
AllSettings() : map[string]interface{} // 获取所有配置
三、 viper 使用举例
3.1 yaml 配置文件
3.2 本地配置文件读取方式
将上述两个配置文件和下面的 main.go 放在统一目录之下,即可实现读取配置文件
3.3 将配置信息序列化为结构体对象
3.4 配置读取
读取服务端口
读取 BSC 节点 url
读取 mysql 主机 IP
版权声明: 本文为 InfoQ 作者【杰哥的技术杂货铺】的原创文章。
原文链接:【http://xie.infoq.cn/article/498ec3ce796a06e7697a04d8a】。文章转载请联系作者。
评论