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
Lepaskan: 2024-12-06 04:28:13
asal
676 orang telah melayarinya

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)
Salin selepas log masuk

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)
Salin selepas log masuk

Sebagai alternatif, d boleh ditakrifkan secara langsung sebagai masa.Pembolehubah tempoh:

d := time.Duration(73.0)
s = time.Hour / d
Salin selepas log masuk

Atau, menggunakan penukaran jenis dalam perisytiharan pembolehubah:

var d time.Duration = 73.0
s = time.Hour / d
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan