如果你還不知道怎么使用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開源框架的參數配置的基礎模塊.
至此結束.