美文网首页go知识
go写api接口之读取配置文件

go写api接口之读取配置文件

作者: 奔跑的图腾 | 来源:发表于2018-04-10 09:57 被阅读173次

    一般都是把配置文件放在config目录下的app.conf,那么怎么读取这个配置文件呢?

    方法一

    利用go自带的os库操作
    这种读取直接把值转为string

    package conf 
    import (
        "strings"
        "bufio"
        "os"
    )
    const (
        FN="./config/app.conf"
    )
    //str配置文件中的key
    func Get(str string) string{
        f, err := os.Open(FN)
        defer f.Close()
        if err != nil {
            os.Exit(-1)
        }
        buf := bufio.NewReader(f)
        for {
            line, _ := buf.ReadString('\n')
            line = strings.TrimSpace(line)
            strs:=strings.Split(line,"=")
            if strings.TrimSpace(strs[0])==str{
                return strings.TrimSpace(strs[1])
            }
        }
        return ""
    }
    

    使用:

    conf.Get("db_user")
    

    方法二

    这种读取可以直接把值转为string、int类型
    https://github.com/go-ini/ini

    package tools
    import (
        "log"
        "github.com/go-ini/ini"
    )
    type IniConfig struct {
        conf *ini.File
    }
    func (self *IniConfig) Load(filename string) {
        conf, err := ini.Load(filename)
        if err != nil {
            log.Fatal(err)
        }
        self.conf = conf
    }
    func (self *IniConfig) GetString(key string) string {
        return self.GetSectionString("", key)
    }
    func (self *IniConfig) GetInt64(key string) int64 {
        return self.GetSectionInt64("", key)
    }
    func (self *IniConfig) GetSectionString(section string, key string) string {
        if self.conf == nil {
            return ""
        }
        s := self.conf.Section(section)
        return s.Key(key).String()
    }
    func (self *IniConfig) GetSectionInt64(section string, key string) int64 {
        if self.conf == nil {
            return 0
        }
        s := self.conf.Section(section)
        v, _ := s.Key(key).Int64()
        return v
    }
    var Config *IniConfig
    func init() {
        Config = &IniConfig{}
    }
    func LoadConfig(filename string) {
        Config.Load(filename)
    }
    

    使用:

    tools.LoadConfig("conf/app.conf")
    ssdb_host := tools.Config.GetString("ssdb.host")
    

    相关文章

      网友评论

        本文标题:go写api接口之读取配置文件

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