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!