Golang配置管理库 Viper的教程详解

目录
  • 一、Viper 是什么?
  • 二、安装 Viper
  • 三、Viper 有什么作用
  • 四、Viper demo 可供参考
    • 注意
  • 五、总结

一、Viper 是什么?

Viper 是应用程序的完整配置的管理工具,用于在应用程序中工作,可以处理所有类型的配置需求和格式。

二、安装 Viper

go get github.com/spf13/viper

三、Viper 有什么作用

  • 设置默认值
  • 读取 JSON、TOML、YAML(YML)、HCL、envfile 和 Java properties 属性配置文件
  • 实时查看和重读配置文件(可选)
  • 从环境变量中读取
  • 从远程配置系统(etcd 或 Consor)读取数据,并观察变化
  • 从命令行标志读取
  • 从缓冲区读取
  • 设置显式值

四、Viper demo 可供参考

func main() {
	ReadIni()
	ReadYml()
}
func ReadIni() {
	v := viper.New()
    v.AddConfigPath("./conf")  // 路径(当前路径下的conf文件夹)
	v.SetConfigName("configA") // 名称
	v.SetConfigType("ini")     // 类型
	err := v.ReadInConfig() // 读配置
	if err != nil {
		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
			fmt.Println("找不到配置文件..")
		} else {
			fmt.Println("配置文件出错..")
		}
	}
	// [section] 如果没写就是 default,也就是下面的 key 变成 default.username
	s1 := v.GetString("db.username")
	s2 := v.GetInt("web.port")
	fmt.Printf("ini 文件的数据库名字:%v, 网络端口号:%v \n", s1, s2)
}
func ReadYml() {
	v := viper.New()
	v.AddConfigPath("./conf")
	v.SetConfigName("configB")
	v.SetConfigType("yml")
	err := v.ReadInConfig()
	if err != nil {
		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
			fmt.Println("找不到配置文件..")
		} else {
			fmt.Println("配置文件出错..")
		}
	}
	s1 := v.GetString("db.username")
	s2 := v.GetInt("web.port")
	s3 := v.GetString("app.time")
	fmt.Printf("yml 文件的数据库名字:%v, 网络端口号:%v, apptime:%v \n", s1, s2, s3)
}

结果:

ini 文件的数据库名字:admin, 网络端口号:8080
yml 文件的数据库名字:root, 网络端口号:8088, apptime:05/30

配置文件内容

  • configA.ini
;数据库配置
[db]
username=admin
password=123
driver=mysql
port=3306
;网络配置
[web]
port=8080
  • configB.yml
# 数据库配置
db:
    username: root
    password: 123
    driver: mysql
    port: 3306
# 网络配置
web:
    port: 8088
# APP配置
app: {id: 10,time: 05/30}

注意

以上例子在根目录下面创建了 conf 文件夹,然后创建了 configA.ini 和 configB.yml 文件

五、总结

使用 viper 能够很好的去管理你的配置文件信息,比如数据库的账号密码,服务器监听的端口,你可以通过更改配置文件去更改这些内容,而不用定位到那一段代码上去,提高了开发效率。 需要注意的是,你还需要补充配置文件的格式相关的知识,才能更好的去使用它。

到此这篇关于Golang 配置管理库 Viper的文章就介绍到这了,更多相关go 配置管理库 Viper内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 聊聊Golang中很好用的viper配置模块

    前言 viper 支持Yaml.Json. TOML.HCL 等格式,读取非常的方便. 安装 go get github.com/spf13/viper 如果提示找不到golang.org/x/text/这个库,是因为golang.org/x/text/这个库在GitHub上托管的路径不一致. 解决办法: 可以从https://github.com/golang/text下载源码下来,然后到$GOPATH/src下面创建golang.org/x/文件夹(已存在的忽略),把压缩包的文件解压到gol

  • golang 使用 viper 读取自定义配置文件

    viper 支持 Yaml.Json. TOML.HCL 等格式,读取非常的方便. viper 官网有案例:https://github.com/spf13/viper go get github.com/spf13/viper 创建 config.yaml 文件 database: driver: mysql host: 127.0.0.1 port: 3306 username: blog dbname: blog password: 123456 建一个 config.go 用于初始化配置

  • golang配置管理神器Viper使用教程

    目录 Viper 安装 什么是Viper? 为什么选择Viper? 把值存入Viper 建立默认值 读取配置文件 写入配置文件 监控并重新读取配置文件 从io.Reader读取配置 覆盖设置 注册和使用别名 使用环境变量 Env 示例: 使用Flags flag接口 远程Key/Value存储支持 远程Key/Value存储示例-未加密 etcd Consul Firestore 远程Key/Value存储示例-加密 监控etcd中的更改-未加密 从Viper获取值 访问嵌套的键 提取子树 反序

  • Golang配置解析神器go viper使用详解

    目录 前言 viper简介 功能 viper配置优先级 安装viper 支持哪些文件格式 key大小写问题 使用指南 如何访问viper的功能 配置默认值 读取配置文件 写配置文件 WriteConfig SafeWriteConfig WriteConfigAs SafeWriteConfigAs 监听配置文件 从io.Reader读取配置 显示设置配置项 注册和使用别名 读取环境变量 与命令行参数搭配使用 pflag 扩展其他flag 远程key/value存储支持 访问配置 直接访问 序列

  • golang常用库之配置文件解析库-viper使用详解

    golang常用库:gorilla/mux-http路由库使用 golang常用库:配置文件解析库-viper使用 golang常用库:操作数据库的orm框架-gorm基本使用 golang常用库:字段参数验证库-validator使用 一.viper简介 viper 配置管理解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 cobra 开发者.总之,他在golang领域是专家,很牛的一个

  • Golang使用第三方包viper读取yaml配置信息操作

    Golang有很多第三方包,其中的 viper 支持读取多种配置文件信息.本文只是做一个小小demo,用来学习入门用的. 1.安装 go get github.com/spf13/viper 2.编写一个yaml的配置文件,config.yaml database: host: 127.0.0.1 user: root dbname: test pwd: 123456 3.编写学习脚本main.go,读取config.yaml配置信息 package main import ( "fmt&quo

  • 详解go基于viper实现配置文件热更新及其源码分析

    go第三方库 github.com/spf13/viper实现了对配置文件的读取并注入到结构中,好用方便. 其中以 viperInstance := viper.New() // viper实例 viperInstance.WatchConfig() viperInstance.OnConfigChange(func(e fsnotify.Event) { log.Print("Config file updated.") viperLoadConf(viperInstance) //

  • Golang配置管理库 Viper的教程详解

    目录 一.Viper 是什么? 二.安装 Viper 三.Viper 有什么作用 四.Viper demo 可供参考 注意 五.总结 一.Viper 是什么? Viper 是应用程序的完整配置的管理工具,用于在应用程序中工作,可以处理所有类型的配置需求和格式. 二.安装 Viper go get github.com/spf13/viper 三.Viper 有什么作用 设置默认值 读取 JSON.TOML.YAML(YML).HCL.envfile 和 Java properties 属性配置文

  • Golang 标准库 tips之waitgroup详解

    WaitGroup 用于线程同步,很多场景下为了提高并发需要开多个协程执行,但是又需要等待多个协程的结果都返回的情况下才进行后续逻辑处理,这种情况下可以通过 WaitGroup 提供的方法阻塞主线程的执行,直到所有的 goroutine 执行完成. 本文目录结构: WaitGroup 不能被值拷贝 Add 需要在 Wait 之前调用 使用 channel 实现 WaitGroup 的功能 Add 和 Done 数量问题 WaitGroup 和 channel 控制并发数 WaitGroup 和

  • Python标准库之time库的使用教程详解

    目录 1.时间戳 2.结构化时间对象 3.格式化时间字符串 4.三种格式之间的转换 time模块中的三种时间表示方式: 时间戳 结构化时间对象 格式化时间字符串 1.时间戳 时间戳1970.1.1到指定时间到间隔,单位是秒 import time print(time.time()) 输出: 1649834054.98593 计算一个小时之前的时间戳 #计算一个小时之前的时间戳 print(time.time() - 3600) 输出: 1649830637.5699048 2.结构化时间对象

  • Golang接口使用教程详解

    目录 前言 一.概述 二.接口类型 2.1 接口的定义 2.2 实现接口的条件 2.3 为什么需要接口 2.4 接口类型变量 三.值接收者和指针接收者 3.1 值接收者实现接口 3.2 指针接收者实现接口 四.类型与接口的关系 4.1 一个类型实现多个接口 4.2 多种类型实现同一接口 五.接口嵌套 六.空接口 七.类型断言 总结 前言 go语言并没有面向对象的相关概念,go语言提到的接口和java.c++等语言提到的接口不同,它不会显示的说明实现了接口,没有继承.子类.implements关键

  • Linux下安装python3.6和第三方库的教程详解

    Linux下安装Python3.6和第三方库 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 一.安装python3.6 1. 安装依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdb

  • Python中Selenium库使用教程详解

    selenium介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转.输入.点击.下拉等,来拿到网页渲染之后的结果,可支持多种浏览器 中文参考文档 官网 环境安装 下载安装selenium pip install selenium -i https://mirrors.aliyun.com/pypi/simple/ 谷歌浏览器驱动程序下载地址:

  • Python爬虫库urllib的使用教程详解

    目录 Python urllib库 urllib.request模块 urlopen函数 Request 类 urllib.error模块 URLError 示例 HTTPError示例 URLError和HTTPError混合使用 urllib.parse模块 urlparse() urlunparse() urlsplit() urljoin() URL 转码 编码quote(string) 编码urlencode() 解码 unquote(string) urllib.robotparse

  • GoAdminGroup/go-admin的安装和运行的教程详解

    使用这个GoAdminGroup/go-admin框架的最简单的例子就可以把项目运行起来 , go-admin 是以扩展库的形式使用的. 建一个main.go package main import ( "io/ioutil" "log" "os" "os/signal" _ "github.com/GoAdminGroup/go-admin/adapter/gin" _ "github.com/

  • go版tensorflow安装教程详解

    此文章基于ubuntu16.04 先在这里贴上官方教程 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/go 注意 安装go版的tensorflow时一定要先安装C版tensorflow且要部署好go语言 c版tensorflow官方教程 (Go 版本 TensorFlow 依赖于 TensorFlow C 语言库) 按照官方的指导就可以,没什么坑,最好是官方指定位置,否则后面可能会有坑! 安好后执行这个命令 go

随机推荐