Maison >développement back-end >Golang >Pourquoi `time.Sleep(i * time.Millisecond)` ne parvient-il pas à se compiler dans Go ?
time.Millisecond Confusion
Dans Go, lorsque vous essayez d'utiliser la fonction time.Sleep() avec une valeur time.Duration, c'est Il est essentiel de s'assurer que les valeurs multipliées sont du même type. Ceci est illustré dans le code ci-dessous :
// Compiles successfully time.Sleep(1000 * time.Millisecond)
Ici, le 1000 est une constante non typée, qui est automatiquement convertie en temps.Durée avant d'effectuer la multiplication.
Cependant, lors de l'utilisation d'un variable int à la place :
var i = 1000 // Compilation error time.Sleep(i * time.Millisecond)
Le code ne parvient pas à se compiler avec l'erreur :
invalid operation: i * time.Millisecond (mismatched types int and time.Duration)
C'est parce que la variable i est de type int tandis que time.Millisecond est de type time. Durée. Go exige que les opérandes des opérateurs binaires tels que * soient du même type, sauf si l'opération implique des décalages ou des constantes non typées.
Pour résoudre ce problème, vous pouvez convertir la variable int en time.Durée avant la multiplication :
var i = 1000 time.Sleep(time.Duration(i) * time.Millisecond)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!