Anteil der Schlafdauer in Go
Frage:
Warum funktioniert Folgendes? Code schläft erfolgreich für einen Bruchteil der Dauer, während der zweite schlägt fehl?
// Success s := time.Hour / 73.0 fmt.Println("sleeping: ", s) time.Sleep(s) // Failure d := 73.0 s := time.Hour / d fmt.Println("sleeping: ", s) time.Sleep(s) // Error: invalid operation: time.Hour / d (mismatched types time.Duration and float64)
Antwort:
Der Unterschied liegt in der Art des Teilers in jeder Zeile:
Um die zweite Zeile zu erstellen Arbeit, müssen Sie d in Zeit umrechnen. Dauer:
s := time.Hour / time.Duration(d)
oder verwenden Sie eine der folgenden Alternativen Wege:
Für Werte, die nicht zeitlich dargestellt werden können .Duration, z. B. 73,5, die Zeit.Stunde muss konvertiert werden float64:
d := 73.5 s := time.Duration(float64(time.Hour) / d)
Weitere Überlegungen:
Das obige ist der detaillierte Inhalt vonWarum behandelt „time.Sleep()' von Go gebrochene Dauern je nach Konstantentyp unterschiedlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!