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

建议看官方文档

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,你可以轻松地读取和管理你的应用程序的配置信息,而无需手动解析和处理配置文件。

猜你喜欢

转载自blog.csdn.net/csxylrf/article/details/131236316