Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Tidur dengan Betul untuk Pecahan Tempoh Masa dalam Go?
Tidur Mengikut Pecahan Tempoh Masa
Dalam Go, tidur untuk sebahagian kecil daripada tempoh masa boleh dicapai menggunakan masa.Sleep () fungsi, yang mengambil masa. Tempoh sebagai hujahnya. Walau bagaimanapun, apabila cuba untuk menentukan sebahagian kecil daripada tempoh, seseorang mungkin menghadapi gelagat berbeza berdasarkan struktur kod.
Pertimbangkan dua senario ini:
// Case 1: Works s := time.Hour / 73.0 fmt.Println("sleeping: ", s) time.Sleep(s) // Case 2: Fails d := 73.0 s := time.Hour / d fmt.Println("sleeping: ", s) time.Sleep(s) // Error: time.Hour / d (mismatched types time.Duration and float64)
Dalam Kes 1, kod berjaya tidur selama pecahan sejam, manakala dalam Kes 2, ia gagal dengan ralat tidak padan jenis. Untuk memahami sebabnya, adalah penting untuk memahami cara pemalar dan jenis dikendalikan dalam Go.
Memahami Ungkapan Malar
Dalam Go, pemalar ditaip dengan kuat dan boleh sama ada tidak ditaip (dengan jenis lalai) atau ditaip secara eksplisit.
Dalam Kes 1, masa.Jam adalah ditaip pemalar masa jenis.Tempoh. Apabila membahagikan masa.Jam dengan 73.0, Go secara automatik menukar pemalar yang tidak ditaip 73.0 kepada masa. Jangka masa, menghasilkan masa ungkapan.Jam / masa. Tempoh(73.0).
Jenis Inferens dan Jenis Tidak Padan
Dalam Kes 2, d ialah pemalar tidak bertaip yang dimulakan dengan 73.0. Memandangkan jenis diperlukan, Go membuat kesimpulan jenis berdasarkan nilai malar, mengakibatkan d menjadi float64.
Seterusnya, apabila cuba membahagikan masa.Jam dengan d, yang kini jenis float64, Go mengesan jenis tidak sepadan. Pembahagian masa.Tempoh dan apungan64 tidak dibenarkan dalam Go.
Menyelesaikan Ketakpadanan Jenis
Untuk menyelesaikan ketidakpadanan jenis, seseorang boleh menukar secara eksplisit d kepada masa. Tempoh sebelum melakukan pembahagian:
s := time.Hour / time.Duration(d)
Sebagai alternatif, d boleh ditakrifkan secara langsung sebagai masa.Pembolehubah tempoh:
d := time.Duration(73.0) s = time.Hour / d
Atau, menggunakan penukaran jenis dalam perisytiharan pembolehubah:
var d time.Duration = 73.0 s = time.Hour / d
Nilai Pengendalian Tidak Boleh Diwakili oleh masa. Tempoh
Jika hasil pembahagian tidak dapat diwakili oleh masa. Tempoh (cth., membahagikan satu jam dengan 73.5), tukar masa.Jam kepada float64, lakukan pembahagian, dan kemudian tukar hasilnya kepada masa. Tempoh:
d := 73.5 s := time.Duration(float64(time.Hour) / d)
Dengan memahami peraturan penukaran jenis dan mengendalikan penukaran secara eksplisit jika perlu, seseorang boleh berjaya tidur untuk sebahagian kecil daripada tempoh masa dalam Go.
Atas ialah kandungan terperinci Bagaimana untuk Tidur dengan Betul untuk Pecahan Tempoh Masa dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!