viper 是一个配置解决方案,拥有丰富的特性:
io.Reader
中读取配置;go get -u github.com/spf13/viper
// 创建实例
config := viper.New()
// 设置配置文件类型
config.SetConfigType("ini")
// 从本地文件读取
// 文件名
config.SetConfigName("mysql")
// 文件所在路径
config.AddConfigPath("./config/")
// 解析文件
err := config.ReadInConfig()
// 从Reader读取
config.ReadConfig(in io.Reader)
// 读取字符串
config.ReadConfig(strings.NewReader(confStr))
// 合并多个配置
config.MergeConfig(strings.NewReader(confStr1))
[mysql]
host=localhost
username=root
password=123456
connect=fasle
package main
import (
"fmt"
"github.com/spf13/viper"
)
func main() {
config := viper.New()
// 文件类型
config.SetConfigType("ini")
// 文件名
config.SetConfigName("mysql")
// 文件所在路径
config.AddConfigPath("./config/")
err := config.ReadInConfig()
if err != nil {
fmt.Println(err)
}
fmt.Println(config.Get("mysql.host"))
fmt.Println(config.Get("mysql.username"))
fmt.Println(config.Get("mysql.password"))
fmt.Println(config.GetBool("mysql.connect"))
}
mysql:
host: localhost
username: root
password: 123456
connect: false
package main
import (
"fmt"
"github.com/spf13/viper"
)
func main() {
config := viper.New()
// 文件类型
config.SetConfigType("yml")
// 文件名
config.SetConfigName("mysql")
// 文件所在路径
config.AddConfigPath("./config/")
err := config.ReadInConfig()
if err != nil {
fmt.Println(err)
}
fmt.Println(config.Get("mysql.host"))
fmt.Println(config.Get("mysql.username"))
fmt.Println(config.Get("mysql.password"))
fmt.Println(config.GetBool("mysql.connect"))
}