golang模块viper读取配置文件
2024-09-04 03:20:35
一、介绍
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": "",
"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) }
最新文章
- 流量三角形:并非简单的";统计学";
- KendoUI系列:DatePicker
- 存在网路的情况下重命名SDE中数据图层错误(The orphan junction feature class cannot be renamed)
- 基于Eclipse搭建Hadoop源码环境
- Relative 定位与Absolute 定位实例
- android开发推荐书籍列表
- 遍历、显示ftp下的文件夹和文件信息
- django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方式
- java基础学习----String
- Android建立模拟器进行调试
- android-蓝牙通信
- iOS音频采集过程中的音效实现
- webp怎么打开 webp怎么转换成jpg
- Centos7.2下部署Java开发环境
- C# Main函数中调用异步方法的2种实现
- Java 获取屏幕的宽、高
- 数据类型+内置方法 python学习第六天
- super 使用以及原理
- matlab学习(2) sort、sortrows
- PowerDesigner ---- 数据库设计(物理模型CDM和概念模型PDM)
热门文章
- 使用fastClick.js所产生的一些问题
- C/C++各个周期的学习
- Mysql 编译报错 g++: internal compiler error: Killed (program cc1plus) 解决办法
- PHP ftp_set_option() 函数
- 40 VSCode下.json文件的编写——(1) linux/g++ (2).json中参数与预定义变量的意义解释
- NX二次开发-UFUN替换组件UF_ASSEM_use_alternate
- NX二次开发-UFUN所有对象类型的宏定义
- vue-cli整合axios的几种方法
- Hadoop主要生态系统简介
- Python正则表达式如何进行字符串替换实例