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 ?
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 ?
En effet, la ParseDuration appelée sur votre chaîne de temps ne prend pas en charge d
comme 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!