Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyebut tempoh dalam hari supaya konfigurasi golang viper boleh dimuatkan tanpa ralat?

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

PHPz
PHPzke hadapan
2024-02-12 16:30:07795semak imbas

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

Kandungan soalan

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?

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam