配置文件存int类型_golang开发:类库篇(四)配置文件解析器goconfig的使用

007c1b866a4a999c43837e62ae4f9d5f.png

### 为什么要使用goconfig解析配置文件

目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量。例如,生产环境跟测试环境使用同一份配置,但是相应的环境下的变量的值是不一样的,通过环境获其取对应的的key value。没明白没关系,举例子的时候就明白了。

PHP的框架yaf。golang的框架beego。对配置的书写和解析基本都是一致的。

看下goconfig的解释

*goconfig 是一个易于使用,支持注释的 Go 语言配置文件解析器,该文件的书写格式和 Windows 下的 INI 文件一样。

配置文件由形为 [section] 的节构成,内部使用 name:value 或 name=value 这样的键值对;每行开头和尾部的空白符号都将被忽略;如果未指定任何节,则会默认放入名为 DEFAULT 的节当中;可以使用 “;” 或 “#” 来作为注释的开头,并可以放置于任意的单独一行中。*

举个栗子一目了然

### 怎么使用 goconfig

先写一个常用的配置conf.ini

```

;redis cache

USER_LIST = USER:LIST

MAX_COUNT = 50

MAX_PRICE = 123456

IS_SHOW = true

[test]

dbdns = root:@tcp(127.0.0.1:3306)

[prod]

dbdns = root:@tcp(172.168.1.1:3306)

```

然后我们读取这个配置

```

package main

import (

"log"

"Unknwon/goconfig"

"fmt"

)

func main() {

cfg, err := goconfig.LoadConfigFile("./conf.ini")

if err != nil {

log.Fatalf("无法加载配置文件:%s", err)

}

userListKey, err := cfg.GetValue("","USER_LIST")

if err != nil {

fmt.Println(err.Error())

}

fmt.Println(userListKey)

userListKey2,_ := cfg.GetValue(goconfig.DEFAULT_SECTION, "USER_LIST")

fmt.Println(userListKey2)

maxCount := cfg.MustInt("","MAX_COUNT")

fmt.Println(maxCount)

maxPrice := cfg.MustFloat64("","MAX_PRICE")

fmt.Println(maxPrice)

isShow := cfg.MustBool("","IS_SHOW")

fmt.Println(isShow)

db := cfg.MustValue("test","dbdns")

fmt.Println(db)

dbProd := cfg.MustValue("prod","dbdns")

fmt.Println(dbProd)

//set 值

cfg.SetValue("","MAX_NEW","10")

maxNew := cfg.MustInt("","MAX_NEW")

fmt.Println(maxNew)

maxNew1,err := cfg.Int("","MAX_NEW")

if err != nil {

fmt.Println(err.Error())

}

fmt.Println(maxNew1)

}

cfg.DeleteKey("", "MAX_NEW")

```

执行下结果

```

go build -o test.bin

./test.bin

USER:LIST

USER:LIST

50

123456

true

root:@tcp(127.0.0.1:3306)

root:@tcp(172.168.1.1:3306)

10

10

```

跟预想的结果一致。

文档上把用法讲的很清楚

*函数 LoadConfigFile 加载一个或多个文件,然后返回一个类型为 ConfigFile 的变量。

GetValue 可以简单的获取某个值。

像 Bool、Int、Int64 这样的方法会直接返回指定类型的值。

以 Must 开头的方法不会返回错误,但当错误发生时会返回零值。

SetValue 可以设置某个值。

DeleteKey 可以删除某个键。

最后,SaveConfigFile 可以保持您的配置到本地文件系统。

使用方法 Reload 可以重载您的配置文件。*

几个注意的地方

1.配置符号可以使用=,也可以使用 :

2.section的部分可以设置一个系统常量,测试环境的值是test,生产环境的值是prod,就不用调用的时候区别环境变量。

cfg.MustValue(ENV,"dbdns")

如果需要了解更详细的使用,看下文档

Unknwon/goconfig

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值