golang开发:类库篇(四)配置文件解析器goconfig的使用
为什么要使用goconfig解析配置文件目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量。例如,生产环境跟测试环境使用同一份配置,但是相应的环境下的变量的值是不一样的,通过环境获其取对应的的key value。没明白没关系,举例子的时候就明白了。 PHP的框架yaf。golang的框架beego。对配置的书写和解析基本都是一致的。 看下goconfig的解释 goconfig 是一个易于使用,支持注释的 Go 语言配置文件解析器,该文件的书写格式和 Windows 下的 INI 文件一样。 举个栗子一目了然 怎么使用 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" "github.com/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 跟预想的结果一致。 文档上把用法讲的很清楚 几个注意的地方 如果需要了解更详细的使用,看下文档 https://github.com/Unknwon/goconfig (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |