文章目录
Golang配置管理库viper
viper是一个golang配置管理库,很多项目都使用viper来构建,例如:docker、Hugo等等
Viper 是什么?
viper 是以个完善的go语言配置包.开发它的目的是来处理各种格式的配置文件信息.
viper 支持:
- 设置默认配置
- 支持读取JSON TOML YAML HCL、envfile和Java属性配置文件
- (可选)监听配置文件变化,实时读取读取配置文件内容
- 读取环境变量值
- 读取远程配置系统(etcd Consul)和监控配置变化
- 读取命令行flag值
- 读取buffer值
- 读取确切值
为什么要使用 Viper?
当你创建app的时候需要关注怎么创建完美的app,而不需要关注怎么写配置文件.
viper 能够帮你做这些事情
- 找到和反序列化JSON TOML YAML HCL JAVA配置文件
- 提供一个配置文件默认值和可选值的机制
- 提供重写配置值和Flag的可选值
- 提供系统的参数别名,解决对以有代码的侵入
- 轻松的辨别出用户输入值还是配置文件值
安装viper
go get github.com/spf13/viper
常见用法快速入门
读取ini配置文件
ini配置文件:
[db]
username=admin
password=123
driver=mysql
port=3306
[web]
port=8080
读取:
package main
import (
"fmt"
"github.com/spf13/viper"
)
func ReadIni() {
v := viper.New()
v.AddConfigPath("./conf") // 路径
v.SetConfigName("config") // 名称
v.SetConfigType("ini") // 类型
err := v.ReadInConfig() // 读取配置
if err != nil {
panic(err)
}
s := v.GetString("db.username")
fmt.Printf("s: %v\n", s)
i := v.GetInt("web.port")
fmt.Printf("i: %v\n", i)
}
func main() {
ReadIni()
}
运行结果:
[Running] go run "e:\golang开发学习\go_pro\main.go"
s: admin
i: 8080
[Done] exited with code=0 in