Golang学习笔记之从命令行读取配置文件
注:本文为个人学习笔记,如果你看到本文有收获请给予点赞支持,如果发现错误,请告知,谢谢!
应用场景
很多时候,我们都是讲服务器环境配置参数在代码中写死,然后随着代码打不同环境的包文件
,那么如何才能动态加载我们所需要的配置文件呢?这个时候,是我们flag包发挥作用的时候了,接下来我们
直接以代码演示,我们从
【1】加载代码中配置文件
【2】运行指定目录下配置文件
两方面开始进行~
方式一、读取代码默认配置文件
现有目录结构
我们从/mini/api/etc/config/json中读取mysql相关信息,其中config.json内容为
{
"mysql":{
"name":"default-user",
"password":"defualt-pass",
"table":"user",
"dataSource":"127.0.0.1:3306"
}
}
我们利用flag来进行文件路径引入,然后通过flag.Parse()方法开始对读到内容进行解析,一下是完整代码
var config = flag.String("config", "etc/config.json", "config file")
func main() {
flag.Parse()
var c config2.Config
conf.MustLoad(*config, &c)
log.Println(c)
}
注:flag.String(string,string,string)有三个参数,第一个参数,本文为config,为命令行带参数的命令,其对应启动命令为
go run xx.go -config /xx/xx/xx/xx.json
如果第一个参数换为f,那么其对应启动命令就为
go run xxx.go -f /xx/xx/xx/xx.json
然后在命令行进入工程目录,运行go run xxx.go,这里的xxx为你的程序入口执行文件
那么运行结果会获取到默认配置即(/etc/config.json)中的内容,运行结果如下:
方式二、读取指定路径下配置文件
在次之前我在我的目录/Users/anqiansong/Users/anqiansong/config目录下新建了一个配置文件config.json,其内容为:
{
"mysql":{
"name":"test",
"password":"1234556",
"table":"user",
"dataSource":"127.0.0.1:3306"
}
}
接下来我们通过go run xxx.go -config /Users/anqiansong/config/config.json运行,其中xxx为你工程的项目入口文件
运行结果如下:
即运行结果为我们自定义的配置文件
今天的学习到此结束,继续上班了~