Maison >développement back-end >Golang >Comment mentionner la durée en jours pour que la configuration de Golang Viper puisse être chargée sans erreur ?

Comment mentionner la durée en jours pour que la configuration de Golang Viper puisse être chargée sans erreur ?

PHPz
PHPzavant
2024-02-12 16:30:07832parcourir

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

Contenu de la question

J'ai deux configurations dans le fichier .env, comme suit

max_token_expiry_days=30d
access_token_duration=30m

La structure utilisée pour charger la configuration dans Golang est la suivante

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

Maintenant, lorsque j'essaie de charger la configuration, j'obtiens l'erreur suivante

* error decoding 'max_token_expiry_days': time: unknown unit "d" in duration "30d"

Cela signifie probablement que le problème vient de max_token_expiry_days=30d 行,因为它无法识别 d 标签。但是 access_token_duration=30m 中的 m 标签与 time 运行良好。golang 中的 duration être capable de bien l'analyser.

Dans le code source du package time, je vois la structure suivante

Nanosecond  Duration = 1
Microsecond          = 1000 * Nanosecond
Millisecond          = 1000 * Microsecond
Second               = 1000 * Millisecond
Minute               = 60 * Second
Hour                 = 60 * Minute

Y a-t-il un moyen de représenter le nombre de jours dans la configuration ?

Solution de contournement

En effet, la ParseDuration appelée sur votre chaîne de temps ne prend pas en charge dcomme suffixe d'unité

Les unités de temps valides sont "ns", "us" (ou "μs"), "ms", "s", "m", "h".

Il vaut mieux utiliser 30d 的小时数,即 720h pour résoudre les ambiguïtés.

Voir aussi la question/explication dans golang/go pour comprendre pourquoi les concepteurs du langage ont décidé d'utiliser select. Pourquoi time.ParseDuration() ne prend pas en charge les jours ? #17767

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer