本文为转载,原文地址:Beego学习笔记——Config

配置文件解析

这是一个用来解析文件的库,它的设计思路来自于database/sql,目前支持解析的文件格式有ini、json、xml、yaml,可以通过如下方式进行安装:

  1. go get github.com/astaxie/beego/config

如何使用

首先初始化一个解析器对象

  1. iniconf, err := NewConfig("ini", "testini.conf")
  2. if err != nil {
  3. t.Fatal(err)
  4. }

然后通过对象获取数据

  1. iniconf.String("appname")

解析器对象支持的函数有如下:

  1. Set(key, val string) error
  2. String(key string) string
  3. Int(key string) (int, error)
  4. Int64(key string) (int64, error)
  5. Bool(key string) (bool, error)
  6. Float(key string) (float64, error)
  7. DIY(key string) (interface{}, error)
 
接下来看看在我们的学习中怎么去使用这个模块,下面我们将接着上次的文章继续。
首先我们在根目录下新建个配置文件,取名为app.conf,在上面简单写几条配置信息
  1. appname="beegotest"
  2. pageoffset=
然后在根目录创建个utils的文件夹,在其中增加一个go文件,名为bconfig.go,这个文件是我们用来初始化配置信息的。代码如下
  1. package utils
  2.  
  3. import (
  4. "github.com/astaxie/beego/config"
  5. "fmt"
  6. )
  7. var BConfig config.Configer
  8. func init(){
  9. var err error
  10. BConfig, err = config.NewConfig("ini", "app.conf")
  11. if err != nil{
  12. fmt.Println("config init error:", err)
  13. }
  14. }

在这里,我们需要引入"github.com/astaxie/beego/config

        因为在我们的初始化函数中用到库中的NewConfig函数,该函数的第一个参数为adaptername, 这里我们就默认传“ini”,第二个参数为配置文件名,我们前面建的文件叫app.conf,所以这里传“app.conf”即可。
        其中BConfig便是我们初始化的Config对象,是个全局的变量,方便后面的调用。至此,我们的配置初始化便完成了。
        配置的使用就是上面提到的几个函数了。这里我们为我们定义的命令格式为: getconf -type key,其作用为获取类型为type的Key的值,另外个为setconf key val,其作用是设置key的值为val。具体函数如下:
GetConfig
  1. func GetConfig(args []string)int{
  2. if args[] == "-int"{
  3. intConf, err := utils.BConfig.Int(args[])
  4. if err != nil{
  5. fmt.Println("get type of int from config error:",err)
  6. }else {
  7. fmt.Println(intConf)
  8. }
  9. }else if args[] == "-int64"{
  10. int64Conf, err := utils.BConfig.Int64(args[])
  11. if err != nil{
  12. fmt.Println("get type of int64 from config error:",err)
  13. }else {
  14. fmt.Println(int64Conf)
  15. }
  16. }else if args[] == "-bool"{
  17. boolConf, err := utils.BConfig.Bool(args[])
  18. if err != nil{
  19. fmt.Println("get type of bool from config error:",err)
  20. }else {
  21. fmt.Println(boolConf)
  22. }
  23. }else if args[] == "-float"{
  24. floatConf, err := utils.BConfig.Float(args[])
  25. if err != nil{
  26. fmt.Println("get type of flaot from config error:",err)
  27. }else {
  28. fmt.Println(floatConf)
  29. }
  30. }else if args[] == "-int64"{
  31. intConf, err := utils.BConfig.Int(args[])
  32. if err != nil{
  33. fmt.Println("get type of int from config error:",err)
  34. }else {
  35. fmt.Println(intConf)
  36. }
  37. }else {
  38. fmt.Println(utils.BConfig.String(args[]))
  39. }
  40. return
  41. }

  

SetConfig
  1. func SetConfig(args []string)int{
  2. err := utils.BConfig.Set(args[], args[])
  3. if err != nil{
  4. fmt.Println("set config error:", err)
  5. }else{
  6. fmt.Println("set config success")
  7. }
  8. return
  9. }

main.go文件中也需要做适当的调整,来调用上面两个函数。完整的代码如下:

  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "fmt"
  6. "os"
  7. "strings"
  8. _"beegotest/utils"
  9. "beegotest/utils"
  10. )
  11.  
  12. func main() {
  13. r := bufio.NewReader(os.Stdin)
  14. handlers := GetCommandHandlers()
  15. Help(nil)
  16.  
  17. for {
  18. fmt.Print("Command> ")
  19. b, _, _ := r.ReadLine()
  20. line := string(b)
  21. tokens := strings.Split(line, " ")
  22.  
  23. if handler, ok := handlers[tokens[]]; ok{
  24. ret := handler(tokens)
  25. if ret != {
  26. break
  27. }
  28. }else {
  29. fmt.Println("Unknown Command:", tokens[])
  30. }
  31. }
  32. }
  33.  
  34. func GetCommandHandlers() map[string]func(args []string) int {
  35. return map[string]func([]string) int{
  36. "help": Help,
  37. "h": Help,
  38. "quit" : Quit,
  39. "q":Quit,
  40. "getconf":GetConfig,
  41. "setconf":SetConfig,
  42. }
  43. }
  44.  
  45. func Help(args []string) int {
  46. fmt.Println(`Command:
  47. help(h)
  48. quit(q)
  49. getconf -type key
  50. setconf key val
  51. `)
  52. return
  53. }
  54.  
  55. func Quit(args []string) int{
  56. return
  57. }
  58.  
  59. func GetConfig(args []string)int{
  60. if args[] == "-int"{
  61. intConf, err := utils.BConfig.Int(args[])
  62. if err != nil{
  63. fmt.Println("get type of int from config error:",err)
  64. }else {
  65. fmt.Println(intConf)
  66. }
  67. }else if args[] == "-int64"{
  68. int64Conf, err := utils.BConfig.Int64(args[])
  69. if err != nil{
  70. fmt.Println("get type of int64 from config error:",err)
  71. }else {
  72. fmt.Println(int64Conf)
  73. }
  74. }else if args[] == "-bool"{
  75. boolConf, err := utils.BConfig.Bool(args[])
  76. if err != nil{
  77. fmt.Println("get type of bool from config error:",err)
  78. }else {
  79. fmt.Println(boolConf)
  80. }
  81. }else if args[] == "-float"{
  82. floatConf, err := utils.BConfig.Float(args[])
  83. if err != nil{
  84. fmt.Println("get type of flaot from config error:",err)
  85. }else {
  86. fmt.Println(floatConf)
  87. }
  88. }else if args[] == "-int64"{
  89. intConf, err := utils.BConfig.Int(args[])
  90. if err != nil{
  91. fmt.Println("get type of int from config error:",err)
  92. }else {
  93. fmt.Println(intConf)
  94. }
  95. }else {
  96. fmt.Println(utils.BConfig.String(args[]))
  97. }
  98. return
  99. }
  100.  
  101. func SetConfig(args []string)int{
  102. err := utils.BConfig.Set(args[], args[])
  103. if err != nil{
  104. fmt.Println("set config error:", err)
  105. }else{
  106. fmt.Println("set config success")
  107. }
  108. return
  109. }

运行结果如下:

  1.  

Beego学习笔记——Config的更多相关文章

  1. Beego学习笔记——开始

    beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.fl ...

  2. Beego学习笔记——Logs

    日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...

  3. Beego学习笔记

    Beego学习笔记 Go 路由(Controller) 路由就是根据用户的请求找到需要执行的函数或者controller. Get /v1/shop/nike ShopController Get D ...

  4. Beego 学习笔记15:布局页面

    页面布局 1>     一个html页面由:head部分,body部分,内部css,内部js,外联css,外联的js这几部分组成.因此,一个布局文件也就需要针对这些进行拆分. 2>     ...

  5. Beego 学习笔记14:Session控制

    Session控制 1>     Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用. 2>     Beego框架内置了 session 模块,目前 ...

  6. Beego学习笔记四:编写Model

    MVC实践一:编写模型 1>     打开mysql数据库,设计表的结构 <1>登录mysql数据库,如下 <2>这三个标注的参数皆有用,需要谨记. <3>创 ...

  7. beego学习笔记一:创建第一个beego Web项目 转

    前提工作 环境搭建,可以参考如下两篇教程:搭建Go语言环境1搭建Go语言环境2 安装beego beego 的安装是典型的 Go 安装包的形式: go get github.com/astaxie/b ...

  8. beego学习笔记(4):开发文档阅读(6)

    beego的响应流程: 1.监听的端口接收数据,默认是8080端口. 2.用户请求到达8080端口后,开始数据处理流程. 3.初始化CONTEXT对象.判断是否是WEBSOCKET请求,如果是,设置I ...

  9. beego学习笔记(4):开发文档阅读(5)

    controller的逻辑: 我们看下面的代码,就知道怎么传值的: import ( "github.com/astaxie/beego" ) type MainControlle ...

随机推荐

  1. 用邻接表或vector实现存边以及具体如何调用[模板]

    存边: 对于指针实现的邻接表: struct edge{ int from,next,to,w; }E[maxn]; int head[maxn],tot=0;//head初始化为-1: void a ...

  2. CoreSeek Sphinx 安装

    1.centos Sphinx 先安装 yum install postgresql-libs yum install unixODBC CoreSeek 安装: http://www.coresee ...

  3. ios开发实践之UIDatePicker(已对之前无法解决的问题做了解答)

    需求:要做一个生日选择的控件,但除了选择之外还需要自定义几个控件,跟生日选择控件组合一起. 做法:自定义了一个UIImageView,并且作为背景.在这个背景view上再添加其他button和时间选择 ...

  4. ios学习笔记第三天之UI控件

  5. Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例

    Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例 一.在Eclipse下编译安装Hadoop插件 Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译. ...

  6. C++内存中的封装、继承、多态(上)

    C++内存中的封装.继承.多态(上) 继我的上一篇文章:浅谈学习C++时用到的[封装继承多态]三个概念 此篇我们从C++对象内存布局和构造过程来具体分析C++中的封装.继承.多态. 一.封装模型的内存 ...

  7. Java快速开发工具 WebBuilder 6.8发布

    WebBuilder是一款开源的可视化Java Web应用开发和运行平台: 基于浏览器的集成开发环境,可视化和智能化的设计,能轻松完成常规应用和面向手机的移动应用开发: 高效.稳定和可扩展的特点,适合 ...

  8. 简单的HTTP过滤模块

    简单的HTTP过滤模块 一.Nginx的HTTP过滤模块特征 一个请求可以被任意个HTTP模块处理: 在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或 ...

  9. DNS:域名系统

    DNS:域名系统 1.DNS      DNS 是计算机域名系统(Domain Name System 或Domain Name Service) 的缩写,它是由解析器以及域名服务器组成的.域名服务器 ...

  10. 构建RESTful风格的WCF服务

    构建RESTful风格的WCF服务 RESTful Wcf是一种基于Http协议的服务架构风格. 相较 WCF.WebService 使用 SOAP.WSDL.WS-* 而言,几乎所有的语言和网络平台 ...