[Golang]每日一库-viper

简介: [Golang]每日一库-viper

viper是什么?

解决程序相关配置,支持多种文件格式,方便快捷,简化配置过程,易修改配置参数

  1. 默认配置
  2. 从 JSON, TOML, YAML, HCL 和 Java 属性配置文件读取数据
  3. 实时查看和重新读取配置文件(可选)
  4. 从环境变量中读取
  5. 从远程配置系统(etcd 或 Consul)读取数据并监听变化
  6. 从命令行参数读取
  7. 从 buffer 中读取
  8. 设置显式值


快速上手

终端引入viper依赖

go get github.com/spf13/viper


常用方法:

viper.SetConfigFile("haha")      //配置文件名,不需要后缀
  viper.SetConfigType("yaml")      //设置配置文件格式
  viper.AddConfigPath("../config") //查找路径
  err := viper.ReadInConfig()      //读取配置文件
  if err != nil {
    panic(fmt.Errorf("fail to find config,please revise it (viper/config)"))
  }
  //监听配置文件,当配置文件改变的时候,不需要重新启动
  viper.OnConfigChange(func(e fsnotify.Event) {
    fmt.Println("Config file changed:", e.Name)
  })


对应go中的mysql写法

mysql:
  host: 127.0.0.1
  port: 3306
  username: xxxx
  password: xxxx
  method: tcp
  database: xxxx
  config: charset=utf8mb4&parseTime=True&loc=Local


注意点:

接收的结构体内部需要跟yaml的字段进行绑定;

默认情况下,mapstructure使用结构体中字段的名称做这个映射

type Mysql struct {
  Host     string `mapstructure:"host"`
  Port     string `mapstructure:"port"`
  Username string `mapstructure:"username"`
  Password string `mapstructure:"password"`
  Method   string `mapstructure:"method"`
  Database string `mapstructure:"database"`
  Config   string `mapstructure:"config"`
}

官方文档:

https://geekdaxue.co/read/go-packages-docs-awesome/docs-viper-README.md

目录
打赏
0
0
0
0
17
分享
相关文章
go-carbon v2.3.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。
90 0
go-carbon v2.3.7 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。
72 2
|
7天前
|
go-carbon v2.6.0 重大版本更新,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持
30 3
Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
gev 是一个基于 epoll 和 kqueue 实现的高性能事件循环库,适用于 Linux 和 macOS(Windows 暂不支持)。它支持多核多线程、动态扩容的 Ring Buffer 读写缓冲区、异步读写和 SO_REUSEPORT 端口重用。gev 使用少量 goroutine,监听连接并处理读写事件。性能测试显示其在不同配置下表现优异。安装命令:`go get -u github.com/Allenxuxu/gev`。
|
5月前
|
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。
112 4
go库介绍:Golang中的Viper库
Viper 是 Golang 中的一个强大配置管理库,支持环境变量、命令行参数、远程配置等多种配置来源。本文详细介绍了 Viper 的核心特点、应用场景及使用方法,并通过示例展示了其强大功能。无论是简单的 CLI 工具还是复杂的分布式系统,Viper 都能提供优雅的配置管理方案。
131 6
|
7月前
|
Golang语言标准库time之日期和时间相关函数
这篇文章是关于Go语言日期和时间处理的文章,介绍了如何使用Go标准库中的time包来处理日期和时间。
154 3
|
8月前
|
一文搞懂 Golang 高性能日志库 - Zap
一文搞懂 Golang 高性能日志库 - Zap
517 2
|
8月前
|
一文搞懂 Golang 高性能日志库 Zerolog
一文搞懂 Golang 高性能日志库 Zerolog
692 0