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)
    
    }
  • 相关阅读:
    无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证]
    无责任Windows Azure SDK .NET开发入门篇一[Windows Azure开发前准备工作]
    了解ASP.NET5 Web应用程序结构
    Hello ASP.NET5
    CentOS7 防火墙 firewall-cmd
    C# 中使用WebClient 请求 https
    使用 gridfs-stream 存储文件遇到的一个坑。
    overflow的几个坑
    IIS7启用静态压缩
    创建高性能移动 web 站点【转载】
  • 原文地址:https://www.cnblogs.com/angelyan/p/11185113.html
Copyright © 2011-2022 走看看