Bagaimana untuk menyebut tempoh dalam hari supaya konfigurasi golang viper boleh dimuatkan tanpa ralat?

PHPz
Lepaskan: 2024-02-12 16:30:07
ke hadapan
778 orang telah melayarinya

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

Kandungan soalan

Saya mempunyai dua konfigurasi dalam fail .env, seperti berikut

max_token_expiry_days=30d
access_token_duration=30m
Salin selepas log masuk

Struktur yang digunakan untuk memuatkan konfigurasi dalam golang adalah seperti berikut

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

Sekarang apabila saya cuba memuatkan konfigurasi saya mendapat ralat berikut

* error decoding 'max_token_expiry_days': time: unknown unit "d" in duration "30d"
Salin selepas log masuk

Ini mungkin bermakna masalahnya ialah max_token_expiry_days=30d 行,因为它无法识别 d 标签。但是 access_token_duration=30m 中的 m 标签与 time 运行良好。golang 中的 duration dapat menghuraikannya dengan baik.

Dalam kod sumber pakej masa, saya melihat struktur berikut

Nanosecond  Duration = 1
Microsecond          = 1000 * Nanosecond
Millisecond          = 1000 * Microsecond
Second               = 1000 * Millisecond
Minute               = 60 * Second
Hour                 = 60 * Minute
Salin selepas log masuk

Adakah terdapat sebarang cara untuk mewakili bilangan hari dalam konfigurasi?

Penyelesaian

Ini kerana ParseDuration yang dipanggil pada rentetan masa anda tidak menyokong dsebagai akhiran unit

Unit masa yang sah ialah "ns", "us" (atau "μs"), "ms", "s", "m", "h".

Anda lebih baik menggunakan 30d 的小时数,即 720h untuk menyelesaikan kekaburan.

Lihat juga soalan/penjelasan dalam golang/go untuk memahami sebab pereka bahasa memutuskan untuk menggunakan pilih. Mengapa masa.ParseDuration() tidak menyokong hari? #17767

Atas ialah kandungan terperinci Bagaimana untuk menyebut tempoh dalam hari supaya konfigurasi golang viper boleh dimuatkan tanpa ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!