• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go开源项目-goconfig源代码浅析

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

如果你还不知道怎么使用goconfig可以先看看 Go开源项目 - goconfig 使用方法.

config.go

goconfig的主文件, 首先定义了一些要是用的常量如"DEFAULT" section, 注释字符"#"和";", 分隔符":"或"=".

定义了boolString字典用于方法获取bool值时使用, "t","true","y","yes"都会被转换成true, "no","1","f","false","n","no","off","0会被转换成false.

    boolString = map[string]bool{
        "t":     true,
        "true":  true,
        "y":     true,
        "yes":   true,
        "on":    true,
        "1":     true,
        "f":     false,
        "false": false,
        "n":     false,
        "no":    false,
        "off":   false,
        "0":     false,
    }

下面是goconfig的主要的配置项结构:

type Config struct {
    comment   string
    separator string

    // === Sections 顺序
    lastIdSection int            // 最后一个Section的标示符
    idSection     map[string]int // Section位置

    // 最后的 option 标示符被用于每一个 section.
    lastIdOption map[string]int // Section最后的标示符

    // Section -> option : value
    data map[string]map[string]*tValue
}

// 存放输入位置和值.
type tValue struct {
    position int    // Option 顺序
    v        string //
}

section.go

  4个方法

  • AddSection - 添加section
  • RemoveSection - 移除section, 先删除section里面的所有option, 然后删除lastIdOption和idSection
  • HasSection - 是否存在相应的section
  • Sections - 返回一个可用的排序后的section列表

option.go

  4个方法

  • AddOption - 增加option
  • RemoveOption - 移除Option
  • HasOption - 是否存在对应的option
  • Options - 返回一个可用的option列表

type.go

5个方法:

  • Bool - 根据section和option的名称返回bool值.
  • Float - section和option的名称返回float值.
  • Int - section和option的名称返回int.
  • RawString - 根据section和option的名称返回对应的值.
  • String - String先调用RawString获得对应的值,然后根据_DEPTH_VALUES的值(默认200)循环匹配value中的变量,并返回最终解析好的value.

read.go和write.go

分别用于读取配置文件(调用ReadDefault方法,读取每行的option:vaule时,如果value中" ;", "\t;", " #", "\t#"等字符,会被截断)和生成配置文件(调用WriteFile方法).

error.go

自定义了sectionError和optionError错误信息, 分别用于提示没有找到section和没有找到option.

这个开源库比较简单, 大概过一下就明白了, 它是Revel开源框架的参数配置的基础模块.

 

至此结束.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go下载安装发布时间:2022-07-10
下一篇:
《Go语言高级编程》截选:Database 和数据库打交道发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap