Config_Viper
- 文件类型:
SupportedExts = []string{"json", "toml", "yaml", "yml", "properties", "props", "prop", "hcl", "tfvars", "dotenv", "env", "ini"}
- 优先级:Set、Flag、Env、File、external key/value stores、Default
- kv stores:Etcd、Etcd3、Consul、Firestore、NATS
- Get
- Getxxx
- key:点分割,即对象语法,数组则索引就是属性名
- 设置文件
- 文件路径:viper.SetConfigFile(如这样的都是默认viper对象,可以创建多个)
- 文件搜索:
- viper.SetConfigName:文件名
- viper.SetConfigType:设置目标文件扩展名
- viper.AddConfigPath:在多个目录中仅搜索一个文件
- 读文件:
- viper.ReadInConfig:读取设置好的文件
- viper.ReadConfig:读取reader
- 写文件
- 同文件:viper.WriteConfig
- 其他文件:WriteConfigAs
- 环境变量
- viper.SetEnvPrefix:设置前缀
- 手动绑定每个:viper.BindEnv
- 自动绑定所有:viper.AutomaticEnv
- flag
- Watch
- viper.OnConfigChange:监听文件变化,Name就是该文件路径,还有Op判断
- 基于
github.com/fsnotify/fsnotify实现
- 反序列化到对象:viper.Unmarshal