zoukankan      html  css  js  c++  java
  • 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)
    
    }
  • 相关阅读:
    放置消息
    MQ基础概念和介绍
    jQuery之双下拉框
    Spring整合JMS——事务管理
    DataTable学习笔记---排序细则、列隐藏
    jquery datatables api
    JavaScript高级 面向对象(2)--调试工具的使用:音乐循环播放
    JavaScript高级 面向对象(1)--添加一个div标签
    VBA学习笔记(9)--生成点拨(1)
    VBA学习笔记(8)--遍历所有文件夹和文件
  • 原文地址:https://www.cnblogs.com/angelyan/p/11185113.html
Copyright © 2011-2022 走看看