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)

}

原文地址:https://www.cnblogs.com/angelyan/p/11185113.html

时间: 2024-10-09 13:32:09

golang模块viper读取配置文件的相关文章

Golang之beego读取配置信息,输出log模块

1,准备好配置文件 [server] listen_ip = "0.0.0.0" listen_port = 8888 [logs] log_level=debug log_path=./logs/logagent.log [collect] log_path=D:\project\logs\logagent.log topic=nginx_log chan_size=100 通过golang读取配置文件 package main import ( "fmt" &q

python读取配置文件 变量 ConfigParser模块

Python 读取写入配置文件很方便,可使用内置的 configparser 模块配置文件:config.ini [oppo] platformName = Android platformVersion = 6.0 deviceName = weiruoyu appPackage = com.sina.weibo appActivity = .SplashActivity url = http://127.0.0.1:4723/wd/hub [mysql] host=127.0.0.1 por

Python模块之: ConfigParser 配置文件读取

ConfigParser用于读写类似INI文件的配置文件,配置文件的内容可组织为组,还支持多个选项值(option-value)类型. ConfigParser使用用的配置文件格式由一个或多个命名的节(section)组成,每一节包含由key和value构成的选项(option). 在一节中每行列出一个选项.行以选项名开头,选项名与值之间用一个冒号(:)或一个等号(=)分开. 1.读取配置文件 -read(filename) 直接读取ini文件内容 -sections() 得到所有的sectio

python + selenium -- 读取配置文件内容

任何一个项目,都涉及到了配置文件和管理和读写,python 支持很多配置文件的读写.本文记录使用 python + selenium自动化过程中,学习的使用python自带的ConfigParser类读取ini配置文件的方法. 1.在所在项目新建一个文件夹,如config,在配置文件中新建一个文件,如config.ini 配置文件填写内容如下: 1 [broswer_name] 2 broswer = 'firefox' 3 4 [server] 5 server = 'http://www.b

python读取配置文件 ConfigParser

Python 标准库的 ConfigParser 模块提供一套 API 来读取和操作配置文件. 配置文件的格式 a) 配置文件中包含一个或多个 section, 每个 section 有自己的 option: b) section 用 [sect_name] 表示,每个option是一个键值对,使用分隔符 = 或 : 隔开: c) 在 option 分隔符两端的空格会被忽略掉 d) 配置文件使用 # 和 ; 注释 一个简单的配置文件样例 myapp.conf 1 2 3 4 5 6 7 8 9

3月15日 【如何读取配置文件】

3月15日 [如何读取配置文件] 读取配置总是报错,后检查环境变量 ,将库文件考入即可无法导入 configparser模块,import configparser报错解. 在Python2下,需要大写:import ConfigParser在PYthon3下,需要小写:import configparser 如果不是以上原因,其他解决办法:1.添加环境变量 把python相关文件夹,python文件夹,scripts文件夹加入环境变量中.2.在lib中找到configparse加入到scrip

python学习(3)--读取配置文件

一. 关于配置文件 ini文件由三部分组成,分别为节.键.值. 节 [section] 参数(键=值) name=value 注解 注解使用分号表示(;).在分号后面的文字,直到该行结尾都全部为注解. 例如: [DATABASE] host = 127.0.0.1 username = root password = 12345678 port = 3306 database = test 二.python读取配置文件 思路:利用python中的ConfigParser模块中的ConfigPar

selenium+python自动化测试--读取配置文件(.ini)

前言:今天为什么要整理读取配置文件呢?原因是:公司正在做的项目,操作页面时都是根据路由跳转,由于自己经验尚浅,将url地址写在每个用例中,导致每次开发一更改路由,我就要去每个页面中修改url地址,光来来回回找页面就很费时间,所以就想到了用配置文件,将所有url地址放在一个文件中,页面用到哪个时读取哪个. 一.基础了解 ini ini配置文件格式如下: ;这里是注释 [section0] key0 = value0 key1 = value1 [section1] key2 = value2 ke

Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)

在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config]platformName=AndroidappPackage=com.sheinsideappActivity=.module.GuideActivitybaseUrl=http://0.0.0.0:4723/wd/hubfindElementTimes=10[cmd]openAppium=nod