一:简要介绍Viper
Viper主要是用于处理各种格式的配置文件,简化程序配置的读取问题。
- Viper 支持:(后续会详细介绍)
- 设置默认值
- 从JSON,TOML,YAML,HCL和Java属性配置文件中读取
- 实时观看和重新读取配置文件(可选)
- 从环境变量中读取
- 从远程配置系统(etcd或Consul)读取,并观察变化
- 从命令行标志读取(flag)
- 从缓冲区读取
- 设置显式值
二:Viper安装
go get github.com/spf13/viper
三:yaml文件读取测试
在项目根目录新建config配置文件目录,同时创建一个yaml格式的配置文件config.yaml,写入一些测试数据
env:
lang: golang
system: mac
author: yanwei
apiTokenKey: Z2luLWNsaTIwMjEwNQ==
apiTokenExpireTime: 1440
apiTokenRebuildTime: 100
// 初始化viper
viper := viper2.New()
// 设置配置文件名,即上一步提取的
viper.SetConfigName(fileName)
// 设置配置文件格式
viper.SetConfigType("yaml")
// 设置配置文件所在目录,这里固定为config,可以根据需要更改
viper.AddConfigPath("config")
具体实现代码
package main
import (
"fmt"
viper2 "github.com/spf13/viper"
"strings"
)
func Get(fileKey string) interface{} {
index := strings.Index(fileKey, ".")
fileName := fileKey[0:index]
key := fileKey[index+1:]
viper := viper2.New()
viper.SetConfigName(fileName)
viper.SetConfigType("yaml")
viper.AddConfigPath("config")
if err := viper.ReadInConfig(); err != nil {
panic(err.Error())
}
return viper.Get(key)
}
func main(){
fmt.Println(Get("config.env.lang"))
fmt.Println(Get("config.env"))
fmt.Println(Get("config.author"))
}
————————————————
版权声明:本文为CSDN博主「棒洗啦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/douz_lungfish/article/details/118733780