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
DDDOriginal
2024-11-18 21:21:02870Durchsuche

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)

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)

Der Code kann nicht mit kompiliert werden Fehler:

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

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)

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!

Stellungnahme:
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