Maison >développement back-end >Golang >Pourquoi `time.Sleep(i * time.Millisecond)` ne parvient-il pas à se compiler dans Go ?

Pourquoi `time.Sleep(i * time.Millisecond)` ne parvient-il pas à se compiler dans Go ?

DDD
DDDoriginal
2024-11-18 21:21:02870parcourir

Why Does `time.Sleep(i * time.Millisecond)` Fail to Compile in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn