viper是使用Golang开发的读取配置文件库
示例
package main
import (
"fmt"
"os"
"github.com/spf13/viper"
)
type City struct {
Name string `mapstructure:"name"`
Age int `mapstructure:"age"`
}
var city City
func main() {
viper.SetConfigFile("./abc.yml")
//viper.SetConfigName("test")
viper.AddConfigPath("./conf/")
viper.SetConfigType("yaml")
if err := viper.ReadInConfig(); err != nil {
fmt.Println(err)
os.Exit(-1)
}
// 从环境变量读
viper.AutomaticEnv()
viper.SetEnvPrefix("ABC") // e.g. ABC_NAME | ABC_KEY1.KEY2
if err := viper.Unmarshal(&city); err != nil {
fmt.Println(err)
os.Exit(-1)
}
fmt.Printf("%#v\n", city)
}