简介:在Go语言中,Viper是一个流行的配置管理库,它提供了方便和灵活的方法来读取、解析和管理应用程序的配置信息。
一.用viper可以干什么
1.支持读取JSON,TOML,YAML,HCL,envfile和java properties等多种不同类型配置文件
2.可以监听配置文件的变化,并重新加载配置文件
3.读取系统环境变量的值
4.读取存储在远程配置中心的配置数据,如ectd,Consul,firestore等系统,并监听配置的变化
5.从命令行读取配置
6.从buffer读取配置
7.可以显示设置配置的值
二.viper配置优先级
viper支持从多个数据源读取配置值,因此当同一个配置key在多个数据源有值时,viper读取的优先级如下:
-
显式调用
viper.Set
设置的配置值 -
命令行参数
-
环境变量
-
配置文件
-
key/value 存储
-
默认值
三.viper基本使用
3.1 导入包
go get github.com/spf13/viper
3.2 初始化viper
viper.SetConfigName("config") // 设置配置文件名
viper.SetConfigType("yaml") // 设置配置文件类型
viper.AddConfigPath(".") // 添加配置文件搜索路径
err := viper.ReadInConfig() // 读取配置文件
if err != nil {
panic(fmt.Errorf("配置文件读取失败: %s", err))
}
3.3 读取配置值
value := viper.GetString("key") // 读取字符串配置值
value := viper.GetInt("key") // 读取整数配置值
value := viper.GetBool("key") // 读取布尔配置值
value := viper.GetFloat64("key") // 读取浮点数配置值
value := viper.GetStringSlice("key") // 读取字符串切片配置值
3.4 设置默认值
viper.SetDefault("key", value) // 设置默认值