golang读取配置文件
来源:互联网 发布:国际注册营养师 知乎 编辑:程序博客网 时间:2024/05/23 19:11
在项目中往往将一些配置信息放到配置文件中,这样在不同的运行环境中,只需修改配置文件即可。
以下介绍两种通过第三方包获取配置文件的方式
一.通过gopkg.in/ini.v1
go get gopkg.in/ini.v1
1. 配置文件test.conf
;[mqtt]mqtt_hostname = 127.0.0.1mqtt_port = 8083mqtt_user = adminmqtt_pass = 123456mqtt_keepalive = 60 mqtt_timeout = 3
2. 获取配置文件并转成结构体
package main import ( "log" "gopkg.in/ini.v1")var filepath ="D:/goproject/src/test/test.conf" type Config struct { //配置文件要通过tag来指定配置文件中的名称 MqttHostname string `ini:"mqtt_hostname"` MqttPort string `ini:"mqtt_port"` MqttUser string `ini:"mqtt_user"` MqttPass string `ini:"mqtt_pass"` MqttKeepaliveint `ini:"mqtt_keepalive"` MqttTimeout int `ini:"mqtt_timeout"`} func main() { config,err := ReadConfig(filepath) //也可以通过os.arg或flag从命令行指定配置文件路径 if err != nil { log.Fatal(err) } log.Println(config)} //读取配置文件并转成结构体func ReadConfig(path string) (Config, error) { var config Config conf, err := ini.Load(path) //加载配置文件 if err != nil { log.Println("load config file fail!") return config, err } conf.BlockMode = false err = conf.MapTo(&config) //解析成结构体 if err != nil { log.Println("mapto config file fail!") return config, err } return config, nil} 运行结果:
{127.0.0.1 8083 admin 123456 60 3}
二、github.com/larspensjo/config 读取ini配置文件
1.获取第三方包:
go get github.com/larspensjo/config
2.配置文件config.ini
[mqtt] #一级选项section#下面为optionmqtt_hostname = 127.0.0.1mqtt_port = 8083mqtt_user = adminmqtt_pass = 123456mqtt_keepalive = 60mqtt_timeout = 3
3. 获取配置文件并转成map
package main import ( "flag" "runtime" "log" "github.com/larspensjo/config") var(//https://studygolang.com/articles/686//支持命令行输入格式为-configfile=name, 默认为config.ini//配置文件一般获取到都是类型 configFile = flag.String("configfile","config.ini","General configuration file") TOPIC = make(map[string]string)) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) flag.Parse() cfg,err := config.ReadDefault(*configFile) //读取配置文件,并返回其Config if err != nil { log.Fatalf("Fail to find %v,%v",*configFile,err) } ifcfg.HasSection("mqtt") { //判断配置文件中是否有section(一级标签) options,err := cfg.SectionOptions("mqtt") //获取一级标签的所有子标签options(只有标签没有值) if err == nil { for _,v := range options{ optionValue,err := cfg.String("mqtt",v) //根据一级标签section和option获取对应的值 if err == nil { TOPIC[v] =optionValue } } } } log.Println(TOPIC)}
4. 运行和结果:
由于需要指定配置文件,故需要在命令行中运行
阅读全文
0 0
- golang 读取配置文件
- golang读取配置文件
- golang web框架 配置文件读取 借鉴 beego
- golang配置文件热更新
- golang 定时刷新配置文件
- golang读取文本文件示例
- Golang 文件读取
- golang 读取execl数据
- golang文件读取介绍
- Golang读取文件
- golang 文件读取
- golang 逐行读取文件
- 读取配置文件
- 读取 配置文件
- 读取配置文件
- 读取配置文件
- 配置文件读取
- 配置文件读取
- 三种单例模式的C++实现
- FCC算法:十一、截断数组--Slasher Flick
- ibatis resultMap参数填充异常:java.sql.SQLException: Column 'XXX' not found.
- iView常用组件小技巧!!
- Quartz-Spring集成Quartz通过XML配置的方式
- golang读取配置文件
- 面向对象:我不要谈很多恋爱,也不要婚姻成为一生的糖衣,我只要跟你背对背而战
- Android开发实践:Java层与Jni层的数组传递
- 微信小程序之生物识别
- 5.2.2 转换方法
- 2017ACM-ICPC西安赛区
- 趣图:IE 很萌的,你们不要欺负Ta
- 一组图看清11.11剁手节背后的战争
- 趣图:调试时的程序员,好比在犯罪现场的侦探…