Saya mempunyai dua konfigurasi dalam fail .env
, seperti berikut
max_token_expiry_days=30d access_token_duration=30m
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"` }
Sekarang apabila saya cuba memuatkan konfigurasi saya mendapat ralat berikut
* error decoding 'max_token_expiry_days': time: unknown unit "d" in duration "30d"
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
Adakah terdapat sebarang cara untuk mewakili bilangan hari dalam konfigurasi?
Ini kerana ParseDuration yang dipanggil pada rentetan masa anda tidak menyokong d
sebagai 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!