教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Golang实战系列:生产场景加载配置文件

Golang实战系列:生产场景加载配置文件

发布时间:2023-03-16   编辑:jiaochengji.com
教程集为您提供Golang实战系列:生产场景加载配置文件等资源,欢迎您收藏本站,我们将为您提供最新的Golang实战系列:生产场景加载配置文件资源

我们在后端开发中,需要一个配置文件来存储或初使化变量属性,像 Django 的有个封装好全局的配置文件settings.py,Flask 中也有类似的。但是在 Golang 中要自己实现或使用第三方的包,这里我介绍两种我开发中常使用的方式。

先来说一种简单暴力的方式:godotenv

官方包:github.com/joho/godotenv

使用方法很简单

1:在你启动程序的同级目录下建一个 .env 文件即可,然后各项配置写入此文件中,内容格式如下:
 

dbUser="root"
dbPwd="123456"
dbHost="127.0.0.1"
dbPort="3306"
db="godevops"

 

2:加载配置文件

在你需要使用变量的时候只要运行 godotenv.Load() 即可

3:获取配置值

dbUser := os.Getenv("dbUser")

 

下面再说说另外一包更强大的包:viper

官方包:github.com/spf13/viper

以加载yaml文件格式为例,下面看一个示例:

web:
    static_path: 
    port: 8080
    domain: 127.0.0.1:8080
    read_timeout: 5
    write_timeout: 5
    idle_timeout: 5
gorm:
    debug: true
    db_type: sqlite3
    max_lifetime: 7200
    max_open_conns: 150
    max_idle_conns: 50
    table_prefix: tb_
mysql:
    host: 127.0.0.1
    port: 3306
    user: root
    password: 123456
    db_name: goapp
    parameters: charset=utf8&parseTime=True&loc=Asia/Shanghai

下面看看viper使用一个示例:

首先我们定义一个结构体用于存放各配置项section

// Config 配置参数
type Config struct {
	Web     Web
	Gorm    Gorm
	MySQL   MySQL
}

v := viper.New()
v.SetConfigFile("config.yaml")
v.SetConfigType("yaml")
if err1 := v.ReadInConfig(); err1 != nil {
    err = err1
	return
}
c = &Config{}
c.Web.StaticPath = v.GetString("web.static_path")
c.Web.Domain = v.GetString("web.domain")
c.Web.Port = v.GetInt("web.port")
c.Web.ReadTimeout = v.GetInt("web.read_timeout")
c.Web.WriteTimeout = v.GetInt("web.write_timeout")
c.Web.IdleTimeout = v.GetInt("web.idle_timeout")
c.MySQL.Host = v.GetString("mysql.host")
c.MySQL.Port = v.GetInt("mysql.port")
c.MySQL.User = v.GetString("mysql.user")
c.MySQL.Password = v.GetString("mysql.password")
c.MySQL.DBName = v.GetString("mysql.db_name")
c.MySQL.Parameters = v.GetString("mysql.parameters")
c.Gorm.Debug = v.GetBool("gorm.debug")
c.Gorm.DBType = v.GetString("gorm.db_type")
c.Gorm.MaxLifetime = v.GetInt("gorm.max_lifetime")
c.Gorm.MaxOpenConns = v.GetInt("gorm.max_open_conns")
c.Gorm.MaxIdleConns = v.GetInt("gorm.max_idle_conns")
c.Gorm.TablePrefix = v.GetString("gorm.table_prefix")

在实际使用中,我们可以把以上代码封装在一个函数中,然后返回一个 c *config.Config 结构体对象。在其它方法调用的时候,把返回值传入即可!

 

转载于:https://my.oschina.net/u/264284/blog/3102743

到此这篇关于“Golang实战系列:生产场景加载配置文件”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
还在担心服务挂掉?Sentinel Go 让服务稳如磐石
photoshop合成震撼的女战士场景实例制作教程
VSCode配置golang开发环境
photoshop合成飞鹰战斗场景制作教程
使用pprof进行golang程序内存分析
想系统学习GO语言(Golang
golang int 转 duration_一看就懂系列之Golang的context
golang微服务框架对比_测试微服务:工具和框架
golang append性能_Golang百万级高并发实践
golang锁记

[关闭]
~ ~