Go配置文件读取插件--viper

使用github.com/spf13/viper 插件可以轻松读取各类配置文件,还能动态监听配置文件的变化,甚至还能从远程配置系统中读取和监听修改

本文以yaml 以及json为例子简单说明下viper的使用

目录结构如下

image.png
yaml文件如下
app_name: "陈大肥的go应用"
log_level: "height"
redis:
  host: "127.0.0.1"
  port: "6379"
mysql:
  host: "127.0.0.1"
  post: "3306"
  user: "jinanav"
  password: "密码密码"
  database: "test"
json文件如下
{
  "app_name" : "陈大肥的go应用",
  "log_level": "height",
  "redis" : {
      "host" : "127.0.0.1",
      "port" : 6379
  },
  "mysql" : {
      "host" : "192.168.0.133",
      "user" : "jinanav",
      "password" : "xxxxx",
      "port" : 3306,
      "database" : "test"
  }
}

main.go如下

package main

import (
"fmt"
"log"
"github.com/spf13/viper"
)

func main() {
    //设置要读取配置文件的名字
    viper.SetConfigName("config")
    //配置文件格式 yaml 也可以支持json等格式,按需设置
    viper.SetConfigType("yaml")
    //viper.SetConfigType("yaml")
    //分割符 默认用. 这样子配置文件的完整名字为 config.yaml
    viper.AddConfigPath(".")
    //也可以设置默认值
    viper.SetDefault("redis.port", 6381)
    //开始载入配置文件
    err := viper.ReadInConfig()
    if err != nil {
        log.Fatal("read config failed: %v", err)
    }
    //查看配置文件
    fmt.Println(viper.Get("app_name"))
    fmt.Println(viper.Get("log_level"))

    fmt.Println("mysql host: ", viper.Get("mysql.host"))
    fmt.Println("mysql port: ", viper.Get("mysql.port"))
    fmt.Println("mysql user: ", viper.Get("mysql.user"))
    fmt.Println("mysql password: ", viper.Get("mysql.password"))
    fmt.Println("mysql database: ", viper.Get("mysql.database"))
}

因为本人喜欢go mod来对包进行管理,如果使用gopath的同学可以执行以下命令拉取依赖包

go get github.com/spf13/viper

执行命令

go mod init (你的应用目录名字)

打印yaml格式的配置文件

image.png

打印json格式的配置文件


image.png

利用viper就能轻松实现配置文件的读取啦

你可能感兴趣的:(Go配置文件读取插件--viper)