Go语言实战-golang读取各种配置文件(ini、json、yaml)

日常项目中,读取各种配置文件是避免不了的,这里介绍一个能读取多种配置文件的库,viper

viper读取ini文件

config := viper.New()
config.AddConfigPath("./conf/")  // 文件所在目录
config.SetConfigName("b")        // 文件名
config.SetConfigType("ini")      // 文件类型

if err := config.ReadInConfig(); err != nil {
	if _, ok := err.(viper.ConfigFileNotFoundError); ok {
		fmt.Println("找不到配置文件..")
	} else {
		fmt.Println("配置文件出错..")
	}
}

host := config.GetString("redis.host")  // 读取配置
fmt.Println("viper load ini: ", host)

b.ini文件如下

[mysql]
username='root'
password='123456'

[redis]
host='127.0.0.1'
poet=3306

[mongodb]
user='admin'
password='admin'

viper读取json文件

config := viper.New()
config.AddConfigPath("./conf/")
config.SetConfigName("c")
config.SetConfigType("json")

if err := config.ReadInConfig(); err != nil {
	if _, ok := err.(viper.ConfigFileNotFoundError); ok {
		fmt.Println("找不到配置文件..")
	} else {
		fmt.Println("配置文件出错..")
	}
}

version := config.GetString("version")
origin := config.GetString("host.origin")

fmt.Println(version)
fmt.Println(origin)

// 读取到map中
host := config.GetStringMapString("host")
fmt.Println(host)
fmt.Println(host["origin"])
fmt.Println(host["port"])

allSettings := config.AllSettings()
fmt.Println(allSettings)

c.json文件如下

{
  "version": "2.0",
  "secret": "footmark",
  "host": {
    "origin": "http://www.baidu.com",
    "port": 8080
  }
}

viper读取yaml文件

config := viper.New()
config.AddConfigPath("./conf/")
config.SetConfigName("a")
config.SetConfigType("yaml")

if err := config.ReadInConfig(); err != nil {
	if _, ok := err.(viper.ConfigFileNotFoundError); ok {
		fmt.Println("找不到配置文件..")
	} else {
		fmt.Println("配置文件出错..")
	}
}

host := config.GetString("database.host")
fmt.Println("viper load yml: ", host)

allSettings := config.AllSettings()
fmt.Println(allSettings)

a.yaml文件如下

database:
  host: 127.0.0.1
  user: root
  dbname: test
  pwd: 123456

viper常用方法

// viper 常用读取配置的方法
Get(key string) : interface{}
GetBool(key string) : bool
GetFloat64(key string) : float64
GetInt(key string) : int
GetIntSlice(key string) : []int
GetString(key string) : string
GetStringMap(key string) : map[string]interface{}
GetStringMapString(key string) : map[string]string
GetStringSlice(key string) : []string
GetTime(key string) : time.Time
GetDuration(key string) : time.Duration
IsSet(key string) : bool
AllSettings() : map[string]interface{}

项目代码

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值