golang模块viper读取配置文件
Posted angelyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang模块viper读取配置文件相关的知识,希望对你有一定的参考价值。
一、介绍
Viper是一个方便Go语言应用程序处理配置信息的库。它可以处理多种格式的配置。它支持的特性:
- 设置默认值
- 从JSON、TOML、YAML、HCL和Java properties文件中读取配置数据
- 可以监视配置文件的变动、重新读取配置文件
- 从环境变量中读取配置数据
- 从远端配置系统中读取数据,并监视它们(比如etcd、Consul)
- 从命令参数中读物配置
- 从buffer中读取
- 调用函数设置配置信息
简单的设置默认值
viper.SetDefault("time", "2019-7-14") viper.SetDefault("notifyList", []string"maple","ffm")
监视配置文件,重新读取配置数据
package main import ( "fmt" "github.com/fsnotify/fsnotify" "github.com/spf13/viper" ) viper:=viper.New() viper.WatchConfig() viper.OnConfigChange(func(e fsnotify.Event) fmt.Println("Config file changed:", e.Name) )
二、读取config.json
#json文件 "appId": "123456789", "secret": "maple123456", "host": "address": "localhost", "port": 5799
package main import ( "fmt" "github.com/spf13/viper" ) //定义config结构体 type Config struct AppId string Secret string Host Host //json中的嵌套对应结构体的嵌套 type Host struct Address string Port int func main() config := viper.New() config.AddConfigPath("./kafka_demo") config.SetConfigName("config") config.SetConfigType("json") if err := config.ReadInConfig(); err != nil panic(err) fmt.Println(config.GetString("appId")) fmt.Println(config.GetString("secret")) fmt.Println(config.GetString("host.address")) fmt.Println(config.GetString("host.port")) //直接反序列化为Struct var configjson Config if err :=config.Unmarshal(&configjson);err !=nil fmt.Println(err) fmt.Println(configjson.Host) fmt.Println(configjson.AppId) fmt.Println(configjson.Secret)
以上是关于golang模块viper读取配置文件的主要内容,如果未能解决你的问题,请参考以下文章