Go viper yaml 配置文件使用

18 min read
package config

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

type OfficeAccount struct {
	AppID     string
	AppSecret string
	RedisAddr string `env:"redis_addr"`
}

type Configuration struct {
	OfficeAccount
}

func Get() *Configuration {
	viper.SetConfigName("config")
	viper.SetConfigType("yml")
	viper.AddConfigPath(".")
	err := viper.ReadInConfig()
	if err != nil {
		log.Fatalf("read config failed: %v", err)
	}

	var c Configuration
	err = viper.Unmarshal(&c)
	if err != nil {
		return nil
	}
	return &c
}

配置文件 config.yml

officeAccount:
  appId: wx64xxxxef3fd6
  appSecret: ce580axxxx8a46a8b
  redisAddr: localhost:6379

入口文件

func main() {
	conf := config.Get()
}