1、什么是Viper
Viper 是 Go 应用程序的完整配置解决方案,包括 12-Factor 应用程序。它旨在在应用程序中工作,可以处理所有类型的配置需求和格式。它支持:
- 设置默认值
- 从 JSON、TOML、YAML、HCL、envfile 和 Java 属性配置文件中读取
- 实时观看和重新读取配置文件(可选)
- 从环境变量中读取
- 从远程配置系统(etcd 或 Consul)读取,并观察变化
- 从命令行标志读取
- 从缓冲区读取
- 设置显式值
2、使用方法
2.1、引入viper依赖
import "github.com/spf13/viper"
2.2、新建配置文件application.yml
server:
ip: "192.168.8.110"
port: 3306
web:
protocols:
- "http"
- "https"
ports:
- 8080
- 8081
2.3、读取配置文件
package main
import (
"github.com/spf13/viper"
"fmt"
"log"
)
func main() {
viper.SetConfigName("application")
viper.SetConfigType("yaml")
viper.AddConfigPath(".")
if err := viper.ReadInConfig(); nil != err {
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
log.Fatal("配置文件路径不存在")
} else {
log.Fatal("读取配置文件错误: %v\n", err)
}
}
fmt.Printf("server.ip: %s\n", viper.GetString("server.ip"))
fmt.Printf("server.port: %d\n", viper.GetInt("server.port"))
fmt.Printf("web.protocols: %v\n", viper.GetStringSlice("web.protocols"))
fmt.Printf("web.ports: %v\n", viper.GetIntSlice("web.ports"))
}