我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute

需求产生

前两天在工作过程中又遇到了一直以来困惑我的一个问题,就是Go配置项的管理问题。

在开发一个新项目的时候,往往涉及到配置项的管理。个人小项目可能会通过配置文件来传入、环境变量来传入,也可能通过命令行参数来传入,公司级别的项目还可能用到各种各样的config center。那么,如何来管理这些配置项就会很麻烦。

在我的习惯中,通常会使用至少两种方式来传入配置——如配置文件加命令行。原因有三:

  • 大部分情况下我运行的程序无需进行定制化,此时常使用默认配置文件。但有时候我们要临时修改一些选项,可以直接通过命令行参数传入覆盖默认配置

  • 我通常会将默认配置文件直接添加到Git仓库里,但其中有部分包含敏感信息的配置(如加密密钥),我需要通过其他方式传入,如环境变量、命令行等

  • 程序如果需要同时在测试环境和生产环境运行,我可以通过命令行选项来控制一些选项,而无需准备两个不同的配置文件

以往在命令行覆盖配置文件中配置项的时候,有一个很大的痛点就是,我不可能给每一个配置项都编写一个对应的命令行参数,而且随着项目的迭代,每次添加新的配置项都要添加对应的命令行参数,不太方便。

Go生态里有一个开源项目viper可以用于处理类似的问题,但是项目比较大,和pflagcobra的耦合也比较深。

其实我需要的功能很简单,一个类似Java -Dserver.port=8000中的-D这样的选项,让我可以动态的修改配置文件中的一些配置项。这样ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值