Wie kann die Dauer in Tagen angegeben werden, damit die Golang-Viper-Konfiguration fehlerfrei geladen werden kann?

PHPz
Freigeben: 2024-02-12 16:30:07
nach vorne
777 Leute haben es durchsucht

如何提及以天为单位的持续时间,以便可以毫无错误地加载 golang viper 配置?

问题内容

我在 .env 文件中有两个配置,如下

max_token_expiry_days=30d
access_token_duration=30m
Nach dem Login kopieren

golang 中用于加载配置的结构如下所示

type appconfig struct {
    maxtokenexpiry      time.duration `mapstructure:"max_token_expiry_days"`
    accesstokenduration time.duration `mapstructure:"access_token_duration"`
}
Nach dem Login kopieren

现在,当我尝试加载配置时,出现以下错误

* error decoding 'max_token_expiry_days': time: unknown unit "d" in duration "30d"
Nach dem Login kopieren

这可能意味着问题出在 max_token_expiry_days=30d 行,因为它无法识别 d 标签。但是 access_token_duration=30m 中的 m 标签与 time 运行良好。golang 中的 duration 能够很好地解析它。

在时间包源代码中,我看到以下结构

Nanosecond  Duration = 1
Microsecond          = 1000 * Nanosecond
Millisecond          = 1000 * Microsecond
Second               = 1000 * Millisecond
Minute               = 60 * Second
Hour                 = 60 * Minute
Nach dem Login kopieren

有什么方法可以在配置中表示天数吗?

解决方法

这是因为在你的时间字符串上调用的ParseDuration不支持d作为一个单位后缀

有效的时间单位为“ns”、“us”(或“μs”)、“ms”、“s”、“m”、“h”。

您最好使用 30d 的小时数,即 720h 来解决歧义。

另请参阅 golang/go 中的问题/解释,了解为什么语言设计者决定使用选择。 为什么 time.ParseDuration() 不支持天数? #17767

Das obige ist der detaillierte Inhalt vonWie kann die Dauer in Tagen angegeben werden, damit die Golang-Viper-Konfiguration fehlerfrei geladen werden kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!