教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 2.golang: golang读取配置文件(toml文件形式)

2.golang: golang读取配置文件(toml文件形式)

发布时间:2021-05-13   编辑:jiaochengji.com
教程集为您提供2.golang: golang读取配置文件(toml文件形式)等资源,欢迎您收藏本站,我们将为您提供最新的2.golang: golang读取配置文件(toml文件形式)资源

golang读取配置文件


使用golang编写web服务,常常需要配置很多信息,常见的配置文件格式有.ini,json文件,yaml和toml等.本文将会介绍使用golang读取toml格式的文本信息.

我们以mysql和gin的配置信息为例作为说明.


使用toml记录配置信息

TOML 的目标是成为一个极简的配置文件格式。TOML 被设计成可以无歧义地被映射为哈希表,从而被多种语言解析.

mysql和gin的配置信息都可以存放在toml中,具体的格式如下:

debug = true
salt = "6rjxs0s49cxnzzrij68fzl76in8zp53h"

# config
[http]
enaled = true
listen = "0.0.0.0:10080"

# mysql config
[mysql]
datasource = "@tcp(127.0.0.1:3306)/test?charset=utf8&&loc=Asia/Shanghai&parseTime=true"
user = "test"
passwd = "suPrjMI67ph5M1SMuex0YXjtgN3L4XF "
max_idle = 10
max_open = 100

在golang的代码中我们需要构建一个和文件层级关系类似的结构体,具体信息如下所示:

type configStruct struct {
    Debug bool `toml:"debug"`
    Salt string `toml:"salt"`
    Http struct{
        Enabled bool `toml:"enabled"`
        Listen string `toml:"listen"`
    }
    Db struct{
        Datasource string `toml:"datasource"`
        Host string `toml:"host"`
        Port int `toml:"port"`
        User string `toml:"user"`
        Passwd string `toml:"passwd"`
        MaxIdle int `toml:"max_idle"`
        MaxOpen int `toml:"max_open"`
    } `toml:"mysql"`
    Aws struct{
        ConfigFilePath string `toml:"config_file_path"`
    } `toml:"aws"`
}

最后面的toml描述了结构体对应的配置文件的关键字.

其实所要做的事情非常简单:
1.编写配置文件信息;
2.根据配置文件编写相应的结构体;
3.根据toml的方式读取配置文件,然后赋予这个结构体;
4.把获取的信息设置给指定的服务即可.


剩下的关键操作如下:
3.根据toml的方式读取配置文件,然后赋予这个结构体;

var C *configStruct
configFile := fmt.Sprintf("./config/%s_cfg.toml", filename)

if _, err := toml.DecodeFile(configFile, &C); err != nil {
        log.Fatalln(err)
}

4.把获取的信息设置给指定的服务即可.

使用gorm连接数据库:

func InitDb()  {
    var err error
    if Db, err = gorm.Open("mysql", config.C.Db.Datasource); err != nil {
        log.Fatalln(err)
    }

    // set max_idle and max_open connect
    Db.DB().SetMaxIdleConns(config.C.Db.MaxIdle)
    Db.DB().SetMaxOpenConns(config.C.Db.MaxOpen)

    Db.SingularTable(true)
    if config.C.Debug == true {
        Db.LogMode(true)
    }
}

使用gin框架提供web服务:

// not debug
if !config.C.Debug {
    gin.SetMode(gin.ReleaseMode)
}

router := gin.Default()
route.ConfigRouter(router)
log.Fatalln(router.Run(config.C.Http.Listen))

小结

一般来讲,我们建议把配置文件单独写在一个目录中,如下格式:

并且对开发环境和正式环境做区分,在命令行传入对应的参数,让程序可以读取合适的配置文件(线上或测试).

到此这篇关于“2.golang: golang读取配置文件(toml文件形式)”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
2.golang: golang读取配置文件(toml文件形式)
go读取toml文件配置文件
golang toml配置文件实例
golang几种常用配置文件使用方法总结(yaml、toml、json、xml、ini)
golang toml解析
golang之配置文件
golang读取配置文件(ini文件)
Golang配置文件解析-oozgconf
Go语言从入门到精通 -【web项目实战篇】- 读取配置文件
go读取配置文件-viper

[关闭]
~ ~