golang web framework 框架系列文章:

配置信息的解析,实现的是一个key=value,键值对的一个配置文件,类似于ini的配置格式,然后解析这个文件,把解析的数据保存到map中,最后调用的时候通过几个string,int之类的函数返回相应的值

首先定义ini配置文件的一些全局性常量:

var (
bComment = []byte{'#'}
bEmpty = []byte{}
bEqual = []byte{'='}
bDQuote = []byte{'"'}
)

配置文件的格式:

type Config struct {
filename string
comment map[int][]string
data map[string]string
offset map[string]int64
sync.RWMutex
}

定义解析文件的函数:

解析文件过程是打开文件,然后一行一行读取,解析注释,空行和k=v的数据

func LoadConfig(name string) (*Config, error)

下面实现一些读取配置文件的函数,返回的值确定为bool,int,int64或string:

func (c *Config) Bool(key string) (bool, error) {
return strconv.ParseBool(c.data[key])
} func (c *Config) Int(key string) (int, error) {
return strconv.Atoi(c.data[key])
} func (c *Config) Float(key string) (float64, error) {
return strconv.ParseFloat(c.data[key], 64)
} func (c *Config) String(key string) string {
return c.data[key]
}

完整代码:

代码地址 config.go

最新文章

  1. RSA密钥生成与使用
  2. java即时通信小例子
  3. 以16进制打印出一块内存buff
  4. 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
  5. jira 无法停止启动解决方案
  6. 自己写的一个banner动画
  7. require js 将config和入口函数分开写
  8. Mac神器Iterm2的Shell Integration的用法和注意事项
  9. golang之pkg(包)
  10. HTML4和HTML5之间10主要差异
  11. MVC5中使用SignalR2.0实现实时聊天室
  12. [DP]一道理想收入问题【转】
  13. Android Studio中Git的配置及协同开发
  14. win 10 精简组件列表
  15. MYSQL数据库常用操作命令
  16. matlab中randn(‘state’)
  17. python语法_终止循环_break_continue
  18. [Struts2]配置文件
  19. EscapeDataString URI 字符串太长
  20. C语言--第八周作业评分(5班)

热门文章

  1. temp数据预处理--以24h为周期的序列
  2. jQuery获取父窗口的元素
  3. Windows10关闭自动更新总结
  4. 2019HDU多校第四场 K-th Closest Distance ——主席树&&二分
  5. [2019HDU多校第五场][HDU 6626][C. geometric problem]
  6. 解决selenium和FireFox版本不兼容问题
  7. 15、Spring Boot 2.x 集成 Swagger UI
  8. Educational Codeforces Round 40 (Rated for Div. 2) 954G G. Castle Defense
  9. Python 12---图形界面
  10. Codeforces Round #426 (Div. 2) B题【差分数组搞一搞】