Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `time.Sleep(i * time.Millisaat)` Gagal Disusun dalam Go?

Mengapakah `time.Sleep(i * time.Millisaat)` Gagal Disusun dalam Go?

DDD
DDDasal
2024-11-18 21:21:02775semak imbas

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

Kekeliruan Masa.Millisaat

Dalam Go, apabila cuba menggunakan fungsi masa.Sleep() dengan masa. Nilai tempoh, ia adalah penting untuk memastikan bahawa nilai yang didarabkan adalah daripada jenis yang sama. Ini digambarkan dalam kod di bawah:

// Compiles successfully
time.Sleep(1000 * time.Millisecond)

Di sini, 1000 ialah pemalar yang tidak ditaip, yang ditukar secara automatik kepada masa. Tempoh sebelum melakukan pendaraban.

Walau bagaimanapun, apabila menggunakan int pembolehubah sebaliknya:

var i = 1000
// Compilation error
time.Sleep(i * time.Millisecond)

Kod gagal untuk disusun dengan ralat:

invalid operation: i * time.Millisecond (mismatched types int and time.Duration)

Ini kerana pembolehubah i adalah jenis int manakala masa.Millisaat adalah jenis masa. Tempoh. Go memerlukan operan untuk operator binari seperti * daripada jenis yang sama, melainkan operasi melibatkan anjakan atau pemalar yang tidak ditaip.

Untuk menyelesaikannya, anda boleh menukar pembolehubah int kepada masa. Tempoh sebelum pendaraban:

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)

Atas ialah kandungan terperinci Mengapakah `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