Go开源项目 - goconfig源代码浅析
2013-01-14 09:46 Danny.tian 阅读(3974) 评论(0) 编辑 收藏 举报如果你还不知道怎么使用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开源框架的参数配置的基础模块.
至此结束.