继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

go语言快速读取配置文件并声明环境变量

holdtom
关注TA
已关注
手记 1842
粉丝 240
获赞 991


为了快速声明配置文件中的全局变量而写的封装包,大家笑纳,废话少说,直接上方法。

1.首先,下载包:

go get "github.com/luckykris/go-utilbox/Env"

go get  "github.com/luckykris/go-utilbox/Conf/ReadConf"

2.书写配置文件(例):

vim test.cfg,写入如下配置内容:

[gms]

port = 2016

[db]

db = mysql

user = root

password = redhat

port = 3306

host = 127.0.0.1

3.写一个test.go来获取配置文件里的配置,并且将所有配置文件内的信息声明全局变量,注意,你需要在go代码里提前定义各项配置的数据类型(string,int目前只支持两类)以及默认值。如下列go代码:

package main

import(

    "github.com/luckykris/go-utilbox/Env"

  "github.com/luckykris/go-utilbox/Conf/ReadConf"

  "fmt"

)

func main(){

  Init()

}

func Init(){

//定义gms配置区域

    gms:=ReadConf.CONFIG{

  AREA:"gms",//区域名

    CONF:map[string]ReadConf.CONFIGROW{

      "port":{TYPE:"int",EXIT:false,DEFAULT:1},//具体配置,

                                                        //此条为port配置默认值为1

                                                        //类型为int

                                                        //注意:如果标明类型是int默认值

                                                        //不要加双引号“”不然会被认为                                                           //是字符串.

                                                        //false的意思是,当配置文件里读                                                          //取不到这个配置的时候程序退出

          },

    }

   //定义db配置区域 

    db:=ReadConf.CONFIG{

  AREA:"db",//区域名

      CONF:map[string]ReadConf.CONFIGROW{

        "port":{TYPE:"int",EXIT:false,DEFAULT:3306},

        "db":{TYPE:"string",EXIT:false,DEFAULT:"mongo"},

        "user":{TYPE:"string",EXIT:false,DEFAULT:"root"},

        "password":{TYPE:"string",EXIT:false,DEFAULT:"root"},

        "host":{TYPE:"string",EXIT:false,DEFAULT:"localhost"},

        },

     }

  //让程序读取配合文件,并且把需要提取的配置区域变量传入LodConf函数

  //这个函数执行之后,所有实现定义的配置就都生成全局变量了。

  ReadConf.LoadConf("test.cfg",gms,db)

  //以下是对配置文件的全局变量的调用方式,用Env.ENV["配置区域/配置条目"].(类型)

  //因为返回的值是interface{}类型的,所以需要自己转换下类型。

  fmt.Printf("gms/port:%d\n",Env.ENV["gms/port"].(int))

  fmt.Printf("db/port:%d\n",Env.ENV["db/port"].(int))

  fmt.Printf("db/db:%s\n",Env.ENV["db/db"].(string))

  fmt.Printf("db/user:%s\n",Env.ENV["db/user"].(string))

  fmt.Printf("db/password:%s\n",Env.ENV["db/password"].(string))

  fmt.Printf("db/host:%s\n",Env.ENV["db/host"].(string))

}

4.以下就是执行此GO程序后的输出结果啦:

[root@gbz.test.org GoMonitorServer]# go run test.go 

gms/port:2016

db/port:3306

db/db:mysql

db/user:root

db/password:redhat

db/host:127.0.0.1

©著作权归作者所有:来自51CTO博客作者luckykris的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP