首页 > 其他分享 >Golang - viper读取配置文件

Golang - viper读取配置文件

时间:2023-05-18 12:23:29浏览次数:35  
标签:err 读取 配置文件 fmt Golang viper Println config

一、介绍

Viper是一个方便Go语言应用程序处理配置信息的库。它可以处理多种格式的配置。它支持的特性:

  • 设置默认值
  • 从JSON、TOML、YAML、HCL和Java properties文件中读取配置数据
  • 可以监视配置文件的变动、重新读取配置文件
  • 从环境变量中读取配置数据
  • 从远端配置系统中读取数据,并监视它们(比如etcd、Consul)
  • 从命令参数中读物配置
  • 从buffer中读取
  • 调用函数设置配置信息

监视配置文件,重新读取配置数据

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)
})

  

二、使用(读取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)

}

  

 

标签:err,读取,配置文件,fmt,Golang,viper,Println,config
From: https://www.cnblogs.com/beatleC/p/17411564.html

相关文章

  • 通过1分钟生成其它线的bar配置文件
    import jsonfrom datetime import datetime, timedeltaimport math# 获取开始时间和结束时间start_time = datetime.strptime("00:00:00", "%H:%M:%S")end_time = datetime.strptime("23:59:00", "%H:%M:%S")# 创建字典,以时间字符串为键,值为所属时间段的开......
  • Hadoop的核心配置文件
    1.core-site.xml:该配置文件包含了Hadoop通用配置,例如Hadoop的文件系统和I/O设置、Hadoop日志目录、Hadoop缓存设置等。2.hdfs-site.xml:该配置文件包含了Hadoop分布式文件系统(HDFS)的配置,例如HDFS的副本数、块大小、数据目录、安全设置等。3.yarn-site.xml:该配置文件包含了Hado......
  • 使用k8s configmap保存nginx.conf配置文件
    创建一个包含Nginx配置的文件(例如nginx.conf)。创建一个ConfigMap对象,将Nginx配置文件添加为其中的数据。kubectlcreateconfigmapnginx-config--from-file=nginx.conf这将创建一个名为"nginx-config"的ConfigMap,并将nginx.conf文件的内容作为其中的数据存......
  • golang配置读取值viper
    viper简介Viper是Go应用程序的完整配置解决方案,包括12-Factor应用程序。它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式。它支持:设置默认值从JSON、TOML、YAML、HCL、envfile和Java属性配置文件中读取实时观看和重新读取配置文件(可选)从环境变量中读取从远程......
  • 成品直播源码,golang计算时间段内的工作日数量
    成品直播源码,golang计算时间段内的工作日数量 packagemainimport("fmt""time")funcmain(){start,_:=time.Parse("2006-01-02","2021-10-01")end,_:=time.Parse("2006-01-02","2021-10-31")total,days:=CalcWorkH......
  • Golang基础-字节跳动青训营
    Golang安装访问https://go.dev/,点击Download,下载对应平台安装包,安装即可如果无法访问上述网址,可以改为访问https://studygolang.com/dl下载安装如果访问github速度比较慢,建议配置gomodproxy,参考https://goproxy.cn/里面的描述配置,下载第三方依赖包的速度可以大......
  • Oracle版面本的MySQL8.0的配置文件 my.cnf
    ##############################创建用户和用户组:groupaddworkuseraddwork  准备目录:mkdir-p/home/work/mysql_3306mkdir-p/home/work/mysql_3306/datamkdir-p/home/work/mysql_3306/etcmkdir-p/home/work/mysql_3306/tmpmkdir-p/home/work/mysql_3306/logmkd......
  • Golang接收者方法语法糖
    1、概述在《Golang常用语法糖》这篇博文中我们讲解Golang中常用的12种语法糖,在本文我们主要讲解下接收者方法语法糖。在介绍Golang接收者方法语法糖前,先简单说下Go语言的指针(Pointer),大致上理解如下:变量名前的& 符号,是取变量的内存地址,不是取值;数据类型前的* 符号,代表......
  • golang vrrp + ipvs 实现简单的服务ha
    比较类似keeplived,但是是比较简单的集成参考图基于vrrp实现vip的处理,同时master以及backup安装基于vrrp+ipvs的程序,基于服务状态进行服务的切换处理 实现说明:对于vrrp处理可以基于包装的vrrpgolang(rongfengliang/vrrp)包,同时对于ipvs可以直接ipvs包(可以使用mqli......
  • Spring Boot加载配置文件的顺序
    在SpringBoot中,配置文件的加载顺序如下:1.配置文件的默认位置:SpringBoot首先尝试加载位于classpath根目录下的`application.properties`或`application.yml`文件作为默认的配置文件。2.`spring.config.name`属性:如果存在`spring.config.name`属性,SpringBoot会尝试加载与该属......