【发布时间】:2020-09-02 16:26:23
【问题描述】:
我使用 Viper https://github.com/spf13/viper 在我的 GO 应用程序中管理项目配置,以及将配置值解组到结构。
var config c.Configuration // Configuration is my configuration struct
err := viper.Unmarshal(&config)
当我错过 .yml 配置文件中的一些配置时,它不会在 Unmarshaling 期间抛出任何错误(正如我所猜测的那样)。
那么我怎样才能强制实现所有配置呢?如果 struct 中的任何字段在 yaml 中没有值,我想查看错误。
【问题讨论】:
-
为什么不在
config.<field name>上做 nil check 之类的? -
@snapGeek 因为这将是手动方法,我知道例如在 node.js 中通过库是可能的。
-
如果您已经在检查配置解析错误,为什么还要手动执行此操作。当您调用
viper.Unmarshal()时,该库可能会返回错误,我猜这就是该库背后的全部想法,即简化代码。