🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 1.介绍 Viper是适用于Go应用程序的完整配置解决方案。 **支持以下特性:** * 设置默认值 * 从`JSON`、`TOML`、`YAML`、`HCL`、`envfile`和`Java properties`格式的配置文件读取配置信息 * 实时监控和重新读取配置文件 * 从环境变量中读取 * 从远程配置系统(etcs或Consul)读取并监控配置变化 * 从命令行参数读取配置 * 从buffer读取配置 * 显式配置值 **Viper可以执行下列操作:** 1. 查找、加载和反序列化JSON、TOML、YAML、HCL、INI、envfile和Java properties格式的配置文件。 2. 提供一种机制为你的不同配置选项设置默认值。 3. 提供一种机制来通过命令行参数覆盖指定选项的值。 4. 提供别名系统,以便在不破坏现有代码的情况下轻松重命名参数。 5. 当用户提供了与默认值相同的命令行或配置文件时,可以很容易地分辨出它们之间的区别 **Viper的优先级:** * 显示调用Set设置值 * 命令行参数 * 环境变量 * 配置文件 * key/value存储 * 默认值 ## 2.安装 ~~~go go get github.com/spf13/viper ~~~ ## 3.使用 **设置默认值** ~~~ viper.SetDefault("ContentDir", "content") viper.SetDefault("LayoutDir", "layouts") viper.SetDefault("Taxonomies", map[string]string{"tag": "tags", "category": "categories"}) ~~~ **读取配置文件** ~~~go viper.SetConfigFile("./config.yaml") // 指定配置文件路径 viper.SetConfigName("config") // 配置文件名称(无扩展名) viper.SetConfigType("yaml") // 如果配置文件的名称中没有扩展名,则需要配置此项 viper.AddConfigPath("/etc/appname/") // 查找配置文件所在的路径 viper.AddConfigPath("$HOME/.appname") // 多次调用以添加多个搜索路径 viper.AddConfigPath(".") // 还可以在工作目录中查找配置 err := viper.ReadInConfig() // 查找并读取配置文件 if err != nil { // 处理读取配置文件的错误 panic(fmt.Errorf("Fatal error config file: %s \n", err)) } ~~~