env库
该库的目标是能够将环境值加载到GO结构中。
此库是一个简单的库,它加载了四种类型的值,并且不涵盖数组或任何其他逻辑,除非此处解释。
支持的类型为**string,int,int32,int64,float32,float64,bool**
。
安装
如果您已经在GO中设置了项目并且要安装库,那么您需要做的就是 go get github.com/diarselimi/dev
就是这样。
基本用法
安装此库后,您可以通过导入并通过参考。
以下示例将向您展示,如何将其与包含标签作为对环境变量的引用的简单结构一起使用。
package main
import (
"fmt"
"github.com/Diarselimi/env"
)
type ClientConfig struct {
BaseUrl string `env:"API_BASE_URL"`
ClientId string `env:"API_CLIENT_ID"`
Secret string `env:"API_SECRET"`
}
func main() {
config := ClientConfig{}
env.PopulateWithEnv(&config)
fmt.Println(config)
}
高级用法
在另一个示例中,您将看到如何通过在所有环境变量中拥有一个中心位置,分布在自己的结构中。
这里最重要的部分是命名为**obj
的标签类型。**
package main
import (
"fmt"
"github.com/Diarselimi/env"
)
type Config struct {
SomeApiConfig ClientConfig 'obj:""'
MysqlConfig SqlConfig 'obj:""'
}
type ClientConfig struct {
BaseUrl string `env:"API_BASE_URL"`
ClientId string `env:"API_CLIENT_ID"`
Secret string `env:"API_SECRET"`
}
type SqlConfig struct {
Host string 'env:"MYSQL_HOST"'
User string 'env:"MYSQL_USER"'
}
func main() {
config := Config{}
env.PopulateWithEnv(&config)
fmt.Println(config)
}
现在,您可以在结构中看到包含**env**
和**obj**
的标签类型,库将查看并填充必要的数据。
贡献
库非常新,并且不包含太多逻辑,如果您是新手,并且想为此项目做出贡献,请随时创建拉动请求,我将查看您的代码。
您在项目很小时开始贡献的机会更高,因为没有学习曲线只有三种方法可以完成工作。
您可以通过编写测试方案来支持,这也有助于使图书馆在未来的功能上更加稳定。
如果您还没有准备好贡献,那么我将感谢其他任何支持GitHub repository,例如给它一个明星 - 如果您认为这是值得的。
结论
env库将为您提供一个简单的功能,可以帮助您将环境值加载到GO结构中。
如果您想在开源中做出贡献,那么这是您这样做的机会。
您可以将此库用于您的项目,也可以通过添加对数组等其他类型的支持来贡献。