伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

【GoCN酷Go推荐】Go程序配置利器-viper库

来源:本站原创 浏览:124次 时间:2021-12-12

推荐理由

日常开发中,程序配置项会包含多种源,如:配置文件,系统环境变量、分布式config服务等等,常规方式是每种配置源写一套逻辑,虽然开发量不大,但总要花精力去维护后续的变更。Viper库恰好能解决这类痛点,同时还支持多种配置文件格式,以及热加载能力,所以程序配置管理场景可以尝试用Viper库。

功能介绍

Viper具体功能特性如下:

  • 设置配置项默认值
  • 支持显式设置配置项
  • 支持读取JSON、TOML、YAML、HCL、envfile和Java properties等配置格式
  • 支持读取环境变量
  • 支持读取etcd、Consul等分布式配置服务
  • 支持读取命令行参数
  • 支持读取内存
  • 配置热加载
    使用指南

Viper使用起来也是比较简单的,主要的代码流程大致如下:

  1. 初始化viper,可以使用单个viper实例,也可以多个viper实例

  2. 针对不同的配置源设置相对应的参数,如:配置文件路径,文件类型,ectd/consul服务器访问地址和key等

  3. 读取配置项,可以直接使用viper.GetXXX()方法获取某个具体配置项,也可以所以或部分配置项反序列化为struct或map

以读取配置文件为例,配置文件内容:

Hacker: truename: stevehobbies:- skateboarding- snowboarding- goclothing:  jacket: leather  trousers: denimage: 35eyes : brownbeard: true

代码:

package mainimport (    "fmt"    "log"    "github.com/spf13/viper")func main() {    viper.SetConfigName("config") // 配置文件名称    viper.SetConfigType("yaml") // 文件名无扩展名,需要显式指定    viper.AddConfigPath("/etc/appname/")   // 配置文件搜索路径    viper.AddConfigPath("$HOME/.appname")  // 多次调用以添加多个    viper.AddConfigPath(".")               // 也可以设置为工作目录    if err := viper.ReadInConfig(); err != nil {        if _, ok := err.(viper.ConfigFileNotFoundError); ok {            // Config file not found; ignore error if desired        } else {            // Config file was found but another error was produced        }        log.Fatal(err)    }    fmt.Println("获取配置文件的Hacker", viper.GetBool("���,���hacker"))    fmt.Println("获取配置文件的hobbies", viper.GetStringSlice("hobbies"))    fmt.Println("获取配置文件的clothing.jacket", viper.GetString(`clothing.jacket`))}

更详细的使用可以参考Viper官方文档

总结

日常开发中程序配置管理的绝大部分场景都可以使用Viper,实际使用中也可以对Viper二次封装,来支持读取更多平台的远程文件。

最后Viper v2启动了,也在收集广大使用者的需求和反馈。传送门。

参考资料

https://github.com/spf13/viper

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net