Rumah >pembangunan bahagian belakang >Golang >Mengapa Time.Sleep(i * time.Millisaat) Gagal Disusun dalam Go?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-11 15:50:03963semak imbas

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)

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)

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!

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