golang web框架设计5:配置设计

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

posted @ 2019-11-19 22:12  九卷  阅读(692)  评论(0编辑  收藏  举报