Heim >Backend-Entwicklung >Golang >Warum kann ich „time.Millisecond' in Go nicht mit einem „int' multiplizieren?

Warum kann ich „time.Millisecond' in Go nicht mit einem „int' multiplizieren?

DDD
DDDOriginal
2024-11-12 08:57:02629Durchsuche

Why Can't I Multiply `time.Millisecond` by an `int` in Go?

Verwechslung mit der Zeit. Millisekunde * int

In Go erfordern Operatoren Operanden identischer Typen, es sei denn, die Operation beinhaltet Verschiebungen oder nicht typisierte Konstanten. Wenn andernfalls ein Operand eine untypisierte Konstante ist (z. B. ein ganzzahliges Literal), wird er in den Typ des anderen Operanden konvertiert.

Betrachten Sie die folgenden Beispiele:

// Works because 1000 is an untyped constant and is converted to `time.Duration`.
time.Sleep(1000 * time.Millisecond)

Allerdings Der folgende Code schlägt fehl:

// Fails because `v` is an `int` and `time.Duration` are different types.
var v = 1000
time.Sleep(v * time.Millisecond)

Um dieses Problem zu beheben, konvertieren Sie die int-Variable v in time.Duration, bevor Sie sie in der Sleep-Funktion verwenden:

time.Sleep(time.Duration(v) * time.Millisecond)

Diese Konvertierung erstellt den Operanden Typen identisch sind, sodass der Vorgang erfolgreich sein kann.

Das obige ist der detaillierte Inhalt vonWarum kann ich „time.Millisecond' in Go nicht mit einem „int' multiplizieren?. 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