Heim > Backend-Entwicklung > Golang > Warum kann „time.Sleep(i * time.Millisecond)' in Go nicht kompiliert werden?

Warum kann „time.Sleep(i * time.Millisecond)' in Go nicht kompiliert werden?

DDD
Freigeben: 2024-11-18 21:21:02
Original
856 Leute haben es durchsucht

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

time.Millisecond Confusion

Wenn Sie in Go versuchen, die Funktion time.Sleep() mit einem time.Duration-Wert zu verwenden, ist dies der Fall Dies ist wichtig, um sicherzustellen, dass die zu multiplizierenden Werte vom gleichen Typ sind. Dies wird im folgenden Code veranschaulicht:

// Compiles successfully
time.Sleep(1000 * time.Millisecond)
Nach dem Login kopieren

Hier ist die 1000 eine untypisierte Konstante, die automatisch in time.Duration konvertiert wird, bevor die Multiplikation durchgeführt wird.

Bei Verwendung von jedoch stattdessen Variable int:

var i = 1000
// Compilation error
time.Sleep(i * time.Millisecond)
Nach dem Login kopieren

Der Code kann nicht mit kompiliert werden Fehler:

invalid operation: i * time.Millisecond (mismatched types int and time.Duration)
Nach dem Login kopieren

Dies liegt daran, dass die Variable i vom Typ int ist, während time.Millisecond vom Typ time.Duration ist. Go erfordert, dass Operanden für binäre Operatoren wie * vom gleichen Typ sind, es sei denn, die Operation beinhaltet Verschiebungen oder untypisierte Konstanten.

Um dieses Problem zu beheben, können Sie die int-Variable in time.Duration vor der Multiplikation konvertieren:

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum kann „time.Sleep(i * time.Millisecond)' in Go nicht kompiliert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage