Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Tidur dengan Betul untuk Pecahan Tempoh Masa dalam Go?

Bagaimana untuk Tidur dengan Betul untuk Pecahan Tempoh Masa dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 04:28:13667semak imbas

How to Correctly Sleep for Fractions of a Time Duration in 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!

Kenyataan:
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