【Web】go管理配置神器 viper库

2023-10-27

建议看官方文档

viper 库的作用

viper适用与go应用程序中处理多种格式的配置文件(如 YAML、JSON、TOML 等)
它支持:

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

Viper 可以被认为是满足所有应用程序配置需求的注册表。

使用

  1. 安装
go get github.com/spf13/viper
  1. 创建一个名为 config.yaml 的 YAML 格式的配置文件,例如:
 database:
 host: localhost
 port: 5432
 user: myuser
 password: mypassword
  1. 编写主函数
package main  
  
import (  
"fmt"  
"github.com/spf13/viper"  
)  
  
func main() {  
viper.SetConfigFile("config.yaml") // 设置配置文件名  
viper.SetConfigType("yaml") // 设置配置文件类型  
viper.AddConfigPath(".") // 设置配置文件路径  
  
err := viper.ReadInConfig() // 读取配置文件  
if err != nil {  
panic(fmt.Errorf("读取配置文件失败: %s \n", err))  
}  
  
dbHost := viper.GetString("database.host") // 读取数据库主机名  
dbPort := viper.GetInt("database.port") // 读取数据库端口号  
dbUser := viper.GetString("database.user") // 读取数据库用户名  
dbPassword := viper.GetString("database.password") // 读取数据库密码  
  
fmt.Printf("%v %v %v %v ", dbHost, dbPort, dbUser, dbPassword) 
// 使用配置信息连接数据库...  
}
  1. 总的结构如下
├─go.mod
├─config
└─main.go

viper 还有一些重要的函数

  1. viper.SetDefault(key string, value interface{}):设置默认值。如果在读取配置文件时找不到键值对,则使用默认值。
viper.SetDefault("database.host", "localhost")
viper.SetDefault("database.port", 5432)
  1. viper.GetString(key string) string:获取字符串类型的配置参数的值。
dbHost := viper.GetString("database.host")
  1. viper.GetInt(key string) int:获取整数类型的配置参数的值。
dbPort := viper.GetInt("database.port")
  1. viper.GetBool(key string) bool:获取布尔类型的配置参数的值。
debugMode := viper.GetBool("debug")
  1. viper.GetDuration(key string) time.Duration:获取持续时间类型的配置参数的值。
timeout := viper.GetDuration("timeout")
  1. viper.GetStringSlice(key string) []string:获取字符串切片类型的配置参数的值。
allowedIPs := viper.GetStringSlice("security.allowed_ips")
  1. viper.Set(key string, value interface{}):设置配置参数的值。

viper.Set("database.host", "db.example.com")
  1. viper.WatchConfig():监视配置文件的更改并重新加载配置文件。
viper.WatchConfig()
  1. viper.ReadInConfig():读取并解析指定的配置文件。
err := viper.ReadInConfig()
if err != nil {
    fmt.Printf("读取配置文件失败: %s\n", err)
}

这些函数是 Viper 中最常用的一些函数,但还有许多其他有用的函数,如 viper.AllSettings()viper.IsSet()viper.Unmarshal() 等。使用 Viper,你可以轻松地读取和管理你的应用程序的配置信息,而无需手动解析和处理配置文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Web】go管理配置神器 viper库 的相关文章

随机推荐

  • 计算机网络——传输层

    这篇文章是计算机网络系列文章的第四篇 计算机网络 物理层 计算机网络 数据链路层 计算机网络 网络层 计算机网络 传输层 计算机网络 应用层 序言 计算机网络中的传输层在当今的社会起到了什么作用 计算机网络中的传输层在通信和数据传输方面起着
  • 用户协议html代码,微信小程序同意用户协议确认投稿页面设计制作开发教程

    bookInfo title 作 者 bookInfo author 感谢上传的图书和题目 参与我们的书城建设 加入图书分类小组 搜索QQ群123456 加入出题小组 搜索QQ群123456 同意遵守树芽读书的 用户协议 修订版 用户协议
  • ST-LINK 调试、连线

    硬件连线 只需要三根线 swclk swdio gnd 调试 1 debug st link setting 2 pork sw 确定 3 utilities st link settings reset and run打钩 Add对应的芯
  • vue之自定义一Tree组件编写

    1 实现注意事项 递归组件是可以在它们 己模板中调 自身的组件 Node vue
  • 《数字集成电路静态时序分析基础》笔记⑤

    欢迎关注个人公众号摸鱼范式 目录 标准单元库 时序库概述 非线性延迟模型 延迟模型 非线性模型 Derating参数 时序模型 组合逻辑 时序单元 线延迟 参考书目 网络课程 数字集成电路静态时序分析基础 的笔记 地址 https www
  • PyCharm安装教程

    目录 一 下载 1 官网 2 下载 二 安装 1 下载完成后 直接点击安装包安装 即可 2 开始安装 然后下一步 3 可以在此处自定义地址 然后下一步 4 选择安装选择 然后下一步 5 点击安装 等待片刻 安装完成 三 配置PyCharm
  • 陶哲轩发新论文了,又是AI帮忙的那种

    丰色 发自 凹非寺量子位 公众号 QbitAI 不到一个月的时间 陶哲轩又一篇论文上线 这次是关于欧拉函数的单调非递减序列 他通过初等论证证明了一个名为M x 函数的渐近式 即随着x增大 M x 的行为趋势 该函数在他之前的一篇博客中有所提
  • 【嵌入式开发基础】git 之 format-patch的使用

    背景介绍 我们在日常的开发中 涉及对第三方源码的修改或在需要将自己的改动给到其他同事时 经常需要将改动打patch后进行处理 这时候我们常直接使用diff命令生成patch文件 然后通过patch进行打对应的patch文件 详细的使用请看这
  • 液晶屏接口 - MIPI

    MIPI 移动行业处理器接口 是Mobile Industry Processor Interface的缩写 MIPI并不是一个单一的接口或协议 而是包含了一套协议和标准 以满足各种子系统 图像子系统 摄像头和显示器 存储子系统 无线子系统
  • 【pytorch函数笔记(二)】torch.nn.Sigmoid()

    import torch nn as nn torch nn Sigmoid 一 sigmoid介绍 sigmoid是激活函数的一种 它会将样本值映射到0到1之间 sigmoid的公式如下 1 1 e
  • VC++ GDI+将CDC保存为图片文件(bmp、jpg、png)

    int GetEncoderClsid const wchar t format CLSID pClsid UINT num 0 UINT size 0 ImageCodecInfo pImageCodecInfo NULL GetImag
  • 运算放大器相关

    1 电压电流采样 放大倍数 电压采样电路 放大增益 Vi 48 1 48 1V 虚短 V V 两个输入端视为同等电位 虚断 反向输入端无电流输入输出 流入输入端电流不足1uA 输入端可以视为等效开路 通过R3和R4的电流相等 欧姆定律 I
  • 手机云游戏App

    注 在安卓手机端使用 其他端不做分析 App 手机游戏 PC和主机游戏 免费时长 手机游戏 是否排队 备注 咪咕快游 支持 数量一般 和腾讯还有合作 有不少腾讯的游戏 支持 每日登录签到送30 60分钟 当天失效 0点更新 每套登录签到和任
  • PMIC

    Aurix TLF35584 多电压安全微处理器电源 提供电源给MCU 第二供电系统 车载自诊断系统供电 用于MCU CAN总线独立供电 输出复位信号给MCU 包含看门狗 由MCU喂狗 如不能则复位MCU 中断 与MCU相接 当电源有异常时
  • Oracle9i之xmltype应用

    Oracle9i之xmltype应用 1 2007年07月12日 星期四 14 52 这几天在研究9I下的XMLTYPE数据类型 这在解析和查找生成XML方面都很方便 在网上搜到了一篇入门级的文章 转贴下来 有几个地方小改了一下 文章摘要
  • java基本环境及常识

    1 编程语言 1 机器语言 0和1 在硬件上直接运行 计算机智能识别0和1 2 汇编语言 也称为符号语言 3 高级语言 面向过程的高级语言 程序设计的基本单位为函数 包括c c 面向对象的的高级语言 程序设计的基本单位为类 包括java c
  • Vue常见问题——Vue路由跳转、切换、返回页面不刷新问题

    前言 最近用iview admin做后台管理系统 遇到了个问题 列表页面点击进入详情页面编辑 编辑完成自动跳转到列表页 需要页面重新刷新请求列表 后管就是这么简单粗暴 然并卵 再次回到列表页页面不会重新刷新 问题很好解决 因为iview a
  • 梦三国解析服务器spl文件头失败,流沙恐遭降级?《梦三国2》MPL夏季赛第二轮激战全面开启...

    逐梦巅峰 为荣耀而战 2020 梦三国2 职业联赛 简称 MPL 夏季常规赛第一轮较量于上周正式结束 风月战队后来居上 通过6小局连胜将战队积分累积至14分 积分排名连跳3级成功登顶第四周积分榜首之位 常规赛半程结束 让我们快速回顾第四周的
  • 挂机宝怎么搭建php网站,如何使用挂机宝搭建网站?挂机宝建站教程

    教程简介 安逸资源网小编现在教你们怎么使用挂机宝搭建网站 这一教程适用于所有windows系统笔记本或挂机宝qq代挂网站怎么搭建 废话我就不多说了 看到你们这么热爱学习技术的份上就直接上教程吧 第一步 首先我们先打算一台挂机宝 没有的可以去
  • 【Web】go管理配置神器 viper库

    建议看官方文档 viper 库的作用 viper适用与go应用程序中处理多种格式的配置文件 如 YAML JSON TOML 等 它支持 设置默认值 从 JSON TOML YAML HCL envfile 和 Java 属性配置文件中读取