golang 环境变量填充struct

  1. 用途
  2. 用法介绍
  3. Example

env to golang struct

caarlos0/env是一个第三方开源的环境变量库,支持转化成struct

Github:https://github.com/caarlos0/env

官方文档:https://godoc.org/github.com/caarlos0/env

用途

  • 将环境变量转化成Go中的Struct的库
  • 可以将项目的配置通过环境变量的形式传入

用法介绍

  • struct 中每个变量需要带上env的标签
  • 如果是数组,需要设置envSeparator
  • 如果设置envExpand标记,则将根据变量的实际值替换字符串中的环境变量(格式${var}或 $var格式),未导出的字段将被忽略。

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import (
"fmt"
"time"

"github.com/caarlos0/env"
)

type config struct {
Home string `env:"HOME"`
Port int `env:"PORT" envDefault:"3000"`
IsProduction bool `env:"PRODUCTION"`
Hosts []string `env:"HOSTS" envSeparator:":"`
Duration time.Duration `env:"DURATION"`
TempFolder string `env:"TEMP_FOLDER" envDefault:"${HOME}/tmp" envExpand:"true"`
}

func main() {
cfg := config{}
if err := env.Parse(&cfg); err != nil {
fmt.Printf("%+v\n", err)
}

fmt.Printf("%+v\n", cfg)
}
  • 运行
    1
    2
    3
    $ PRODUCTION=true HOSTS="host1:host2:host3" DURATION=1s go run main.go

    {Home:/your/home Port:3000 IsProduction:true Hosts:[host1 host2 host3] Duration:1s}

欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinhan_shu@163.com

文章标题:golang 环境变量填充struct

本文作者:QinHan

发布时间:2019-07-30, 14:35:00

最后更新:2020-02-20, 05:42:12

原始链接:https://qinhan.site/2019/07/30/go-env/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏