go 配置管理-Viper使用

go 项目使用 Viper 进行配置文件的加载及管理

关于 Viper 具体介绍参考:https://github.com/spf13/viper,总体而言, Viper 支持常见的配置文件格式,如 jsonyaml 等,并且也支持远程加载等特性

基本使用

  • json 配置文件示例
{
	"test":"hello,this is a test",
	"student":{
		"name":"zhangsan",
		"age": 25
	}
}
config.json
  • 加载配置
package main

import (
	"fmt"

	"github.com/spf13/viper"
)

func load() {
	// 设置文件名
	viper.SetConfigName("config") // name of config file (without extension)
	// 设置配置文件的类型
	viper.SetConfigType("json") // REQUIRED if the config file does not have the extension in the name

	// 设置配置文件路径为当前工作目录
	viper.AddConfigPath(".") // optionally look for config in the working directory

	// 读取配置
	err := viper.ReadInConfig() // Find and read the config file
	if err != nil {             // Handle errors reading the config file
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}

	fmt.Println(viper.Get("test"))
	fmt.Println(viper.Get("student.name"))
}
config.go
  • 测试文件
package main

import "testing"

func TestLoad(t *testing.T) {
	load()
}
config_test.go
  • 测试结果:

=== RUN   TestLoad

hello,this is a test

zhangsan

--- PASS: TestLoad (0.00s)

PASS

ok   dueros-skills-data 0.017s