Fraksi Masa Tempoh Tidur dalam Go
Soalan:
Mengapa yang berikut Pergi kod berjaya tidur untuk tempoh pecahan, manakala yang kedua gagal?
// Success s := time.Hour / 73.0 fmt.Println("sleeping: ", s) time.Sleep(s) // Failure d := 73.0 s := time.Hour / d fmt.Println("sleeping: ", s) time.Sleep(s) // Error: invalid operation: time.Hour / d (mismatched types time.Duration and float64)
Jawapan:
Perbezaannya terletak pada jenis pembahagi dalam setiap baris:
Untuk membuat baris kedua bekerja, anda mesti menukar d kepada masa. Tempoh:
s := time.Hour / time.Duration(d)
atau gunakan salah satu daripada yang berikut cara alternatif:
Untuk nilai yang tidak boleh diwakili dalam masa.Tempoh, seperti 73.5, masa.Jam mesti ditukar kepada float64:
d := 73.5 s := time.Duration(float64(time.Hour) / d)
Pertimbangan Lanjut:
Atas ialah kandungan terperinci Mengapakah `time.Sleep()` Go Mengendalikan Tempoh Pecahan Berbeza Berdasarkan Jenis Pemalar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!