Mengapa Time.Sleep(i * time.Millisaat) Gagal Disusun dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-11 15:50:03
asal
930 orang telah melayarinya

Why Does Time.Sleep(i * time.Millisecond) Fail to Compile in Go?

Perangkap Tempoh Masa Aritmetik dalam Go

Dalam Go, masa.Masa dan masa.Jenis Tempoh adalah lazim untuk bekerja dengan operasi berkaitan masa. Walau bagaimanapun, mungkin terdapat sedikit kekeliruan semasa berurusan dengan pendaraban integer dan jenis ini.

Kod berikut menunjukkan kekeliruan ini:

//works
time.Sleep(1000 * time.Millisecond)

//fails
var i = 1000
time.Sleep(i * time.Millisecond)
Salin selepas log masuk

Blok kod kedua gagal dihimpun kerana jenis yang tidak sepadan . Walaupun kedua-dua 1000 dalam kod kelihatan sebagai integer, ini tidak berlaku.

Dalam Go, pengendali memerlukan operan daripada jenis yang sama, kecuali operator yang melibatkan anjakan atau pemalar yang tidak ditaip. Untuk kes kami, kami mempunyai pendaraban, yang bermaksud operan mestilah sama.

Dalam baris pertama, 1000 ialah pemalar yang tidak ditaip. Apabila digunakan dalam operasi, ia ditukar secara automatik kepada jenis operan lain, yang dalam kes ini ialah masa. Tempoh. Walau bagaimanapun, dalam baris kedua, i ialah pembolehubah jenis int yang diisytiharkan, yang mengakibatkan ketidakpadanan jenis.

Untuk menyelesaikan isu ini, kita perlu menukar i kepada masa. Tempoh sebelum melakukan pendaraban. Berikut ialah contoh:

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)
Salin selepas log masuk

Dengan menukar i kepada masa. Tempoh, pendaraban dan masa berikutnya. Panggilan tidur kini akan berjaya.

Atas ialah kandungan terperinci Mengapa Time.Sleep(i * time.Millisaat) Gagal Disusun 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