Go viper 管理配置教程

1.Viper 是什么?

viper 是以个完善的go语言配置包.开发它的目的是来处理各种格式的配置文件信息.

viper 支持:

  • 设置默认配置
  • 支持读取JSON TOML YAML HCL 和Java属性配置文件
  • (可选)监听配置文件变化,实时读取读取配置文件内容
  • 读取环境变量值
  • 读取远程配置系统(etcd Consul)和监控配置变化
  • 读取命令哈Flag值
  • 读取buffer值
  • 读取确切值

2.为什么要使用 Viper?

当你创建app的时候需要关注怎么创建完美的app,而不需要关注怎么写配置文件.

viper 能够帮你做这些事情

  • 找到和反序列化JSON TOML YAML HCL JAVA配置文件
  • 提供一个配置文件默认值和可选值的机制
  • 提供重写配置值和Flag的可选值
  • 提供系统的参数别名,解决对以有代码的侵入
  • 轻松的辨别出用户输入值还是配置文件值

viper 配置项key是大写不敏感的

3.Viper 基本用法

Python
package main import ( "fmt" "github.com/spf13/viper" "log" ) func init() { viper.SetConfigName("config") //指定配置文件的文件名称(不需要制定配置文件的扩展名) //viper.AddConfigPath("/etc/appname/") //设置配置文件的搜索目录 //viper.AddConfigPath("$HOME/.appname") // 设置配置文件的搜索目录 viper.AddConfigPath(".") // 设置配置文件和可执行二进制文件在用一个目录 err := viper.ReadInConfig() // 根据以上配置读取加载配置文件 if err != nil { log.Fatal(err)// 读取配置文件失败致命错误 } } func main() { fmt.Println("获取配置文件的string",viper.GetString(`app.name`)) fmt.Println("获取配置文件的string",viper.GetInt(`app.foo`)) fmt.Println("获取配置文件的string",viper.GetBool(`app.bar`)) fmt.Println("获取配置文件的map[string]string",viper.GetStringMapString(`app`)) }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package main
import (
    "fmt"
    "github.com/spf13/viper"
    "log"
)
func init() {
    viper.SetConfigName("config") //指定配置文件的文件名称(不需要制定配置文件的扩展名)
    //viper.AddConfigPath("/etc/appname/")   //设置配置文件的搜索目录
    //viper.AddConfigPath("$HOME/.appname")  // 设置配置文件的搜索目录
    viper.AddConfigPath(".")    // 设置配置文件和可执行二进制文件在用一个目录
    err := viper.ReadInConfig() // 根据以上配置读取加载配置文件
    if err != nil {
        log.Fatal(err)// 读取配置文件失败致命错误
    }
}
func main()  {
    fmt.Println("获取配置文件的string",viper.GetString(`app.name`))
    fmt.Println("获取配置文件的string",viper.GetInt(`app.foo`))
    fmt.Println("获取配置文件的string",viper.GetBool(`app.bar`))
    fmt.Println("获取配置文件的map[string]string",viper.GetStringMapString(`app`))
}

代码详解

  • viper.SetConfigName("config") 设置配置文件名为config, 不需要配置文件扩展名, 配置文件的类型 viper会自动根据扩展名自动匹配.
  • viper.AddConfigPath(".")设置配置文件搜索的目录, . 表示和当前编译好的二进制文件在同一个目录. 可以添加多个配置文件目录,如在第一个目录中找到就不不继续到其他目录中查找.
  • viper.ReadInConfig() 加载配置文件内容
  • viper.Get*** 获取配置文件中配置项的信息

viper基本用法代码地址

4.viper 高级用法

4.1 viper设置配置项的默认值

默认值不是必须的,如果配置文件、环境变量、远程配置系统、命令行参数、Set函数都没有指定时,默认值将起作用. 例子:

Python
viper.SetDefault("ContentDir", "content") viper.SetDefault("LayoutDir", "layouts") viper.SetDefault("Taxonomies", map[string]string{"tag": "tags", "category": "categories"}) Reading Config Files
1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值