go配置文件参数被执行shell命令覆盖

经常会有这样的需求,就是在执行shell脚本构建程序的时候,希望能够在shell中指定某些配置文件的值。

也就是说,shell命令中的优先级要高于配置文件的优先级。

configor(https://github.com/jinzhu/configor)也只支持的,看下面的脚本

cd ../src
go build -o ../main
cd ../

CONFIGOR_ENV=test CONFIGOR_DB_NAME="aa" ./main
#CONFIGOR_ENV=test ./main

对应的配置文件:

appname: common

db:
  name:     test
  user:     root
  password: 123456
  port:     3306

contacts:
  - name: i test
    email: test@test.com
  - name: i test2
    email: test2@test.com

对应的配置struct

//配置类
var Config = struct {
   APPName string `default:"app name"`

   DB struct {
      Name     string
      User     string `default:"root"`
      Password string `required:"true" env:"DBPassword"`
      Port     uint   `default:"3306"`
   }

   Contacts []struct {
      Name  string
      Email string `required:"true"`
   }
}{}

执行后,能够看到,shell命令中的

CONFIGOR_DB_NAME="aa"

覆盖了原有的配置文件中的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值