Golang读取配置⽂件--viper包⼀、Viper包⽤法
// 配置⽂件解析到对象⾥⾯去
type Options struct {
// 对应yaml的mysql  (Mysql--转成⼩写对应)
MySQL struct {
Host    string
Password string
}
// 对应yaml的web电话交换机设置
Web struct {
Auth map[string]string
}
// log
Log struct {
Max_age  int
Max_size int
}
// 如果有不符合的就⽤标签去指定
Test struct {
Host string
} `mapstructure:"db"`
张杰谢娜什么时候离的婚是真的吗}
func main() {
// 指定要读取的配置⽂件
viper.SetConfigType("yaml") // 指定⽂件格式
viper.SetConfigName("test") // ⽂件名不⽤加后缀
viper.AddConfigPath(".")    // 路径
// 设置环境变量读取
viper.AutomaticEnv()
// 设置环境变量前缀,有这个前缀的环境变量才会读取 _连接
viper.SetEnvPrefix("mysql_exporter")
番茄炒蛋怎么做// 判断读取配置⽂件是否有误
if err := viper.ReadInConfig(); err != nil {
logrus.Debug(err)
}
// 设置默认值,配置⽂件不存在的时候才会⽤这个默认值。⽂件不存在也会⽤这个默认值
viper.SetDefault("mysql.port", 3306)
// 读取配置⽂件的值
fmt.Println(viper.Get("mysql"))
fmt.Println(viper.GetString("mysql.host"))
fmt.Println(viper.GetInt("mysql.port"))
// fmt.Println(viper.Get("redis.port")) // set redis.port=6333 就能读取到了 Linux就配置环境变量
//
options := new(Options)
if err := viper.Unmarshal(options); err != nil {
logrus.Error(err)
}
fmt.Println(options) // &{{192.168.1.208 123456}}
中国十大茶叶// viper 写配置⽂件
viper.SetDefault("redis.host", "2.2.2.2")
viper.WriteConfigAs("./test02.yaml")
}
---
# 特殊字符得⽤双引号引⽤起来
mysql:
host: 192.168.1.208
port: 3306
username: root
password: 123456
dbname: tzh666
web:
auth:
username: admin
password: "$2a$05$3nwHH6M3cKrDd.2gsNlJtOtuOvtc7/kgfnGv4rTbVm8F1wEeBz3Dm" log:
filename: "logs/mysqld.log"
max_age: 0
max_size: 1
max_backups: 14
compress: flase
db:读取配置文件失败
host: 1.1.1.1
>泰国明星出家