美文网首页
beego config模块源码分析笔记四

beego config模块源码分析笔记四

作者: ljh123 | 来源:发表于2018-12-27 16:31 被阅读33次

    json.go源码,这个文件在260行左右,beego的每个文件耦合性非常小,所以分析源码是比较轻松的。
    这个文件和上一个ini.go非常类似,只不过一个针对ini配置文件,json配置文件,提供给开发者的操作基本一致,屏蔽了内部实现。

    提供给开发者两个结构体
    1)type JSONConfig struct
    用于解析json文件和json数据,解析之后的内容存储在JSONConfigContainer变量中
    2)type JSONConfigContainer struct
    协程安全

    一、type JSONConfig struct

    type JSONConfig struct {
    }
    会将值中${ENV}转成实际的值
    如1.ini
    [test]
    k=${GOPATH}
    ;如果$GOPATH = /opt/go,则解析之后的值为k=/opt/go
    

    1)func (js *JSONConfig) Parse(filename string) (Configer, error)
    2)func (js *JSONConfig) ParseData(data []byte) (Configer, error)

    二、type JSONConfigContainer struct

    type JSONConfigContainer struct {
        data map[string]interface{}
        sync.RWMutex
    }
    

    1)func (c *JSONConfigContainer) Bool(key string) (bool, error)
    根据key获取值,并将其转成bool值
    2)func (c *JSONConfigContainer) DefaultBool(key string, defaultval bool) bool
    根据key获取值,并将其转成bool值,如果不存在值,则返回传入的默认值
    3)func (c *JSONConfigContainer) Int(key string) (int, error)
    根据key获取值,并将其转成int值
    4)func (c *JSONConfigContainer) DefaultInt(key string, defaultval int) int
    根据key获取值,并将其转成int值,如果不存在值,则返回传入的默认值
    5)func (c *JSONConfigContainer) Int64(key string) (int64, error)
    根据key获取值,并将其转成int64值
    6)func (c *JSONConfigContainer) DefaultInt64(key string, defaultval int64) int64
    根据key获取值,并将其转成int64值,如果不存在值,则返回传入的默认值
    7)func (c *JSONConfigContainer) Float(key string) (float64, error)
    根据key获取值,并将其转成float值
    8)func (c *JSONConfigContainer) DefaultFloat(key string, defaultval float64) float64
    根据key获取值,并将其转成float64值,如果不存在值,则返回传入的默认值
    9)func (c *JSONConfigContainer) String(key string) string
    根据key获取值,并将其转成string值
    10)func (c *JSONConfigContainer) DefaultString(key string, defaultval string) string
    根据key获取值,并将其转成string值,如果不存在值,则返回传入的默认值
    11)func (c *JSONConfigContainer) Strings(key string) []string
    根据key获取值,并将其转成[]string值
    12)func (c *JSONConfigContainer) DefaultStrings(key string, defaultval []string) []string
    根据key获取值,并将其转成[]string值,如果不存在值,则返回传入的默认值
    13)func (c *JSONConfigContainer) GetSection(section string) (map[string]string, error)
    获取值
    14)func (c *JSONConfigContainer) SaveConfigFile(filename string) (err error)
    将解析后的内容进行存储
    15)func (c *JSONConfigContainer) Set(key, val string) error
    将键值进行存储
    16)func (c *JSONConfigContainer) DIY(key string) (v interface{}, err error)
    以interface{]方式返回值
    17)func (c *JSONConfigContainer) getData(key string) interface{} {
    获取值

    func init() {
        Register("json", &JSONConfig{})
    }
    

    相关文章

      网友评论

          本文标题:beego config模块源码分析笔记四

          本文链接:https://www.haomeiwen.com/subject/qwmllqtx.html