Maison > développement back-end > Golang > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-11 15:50:03
original
958 Les gens l'ont consulté

Why Does Time.Sleep(i * time.Millisecond) Fail to Compile in Go?

Pièges de l'arithmétique de la durée dans Go

Dans Go, les types time.Time et time.Duration sont répandus pour travailler avec des opérations liées au temps. Cependant, il pourrait y avoir une certaine confusion lorsqu'il s'agit de multiplication d'entiers et de ces types.

Le code suivant illustre cette confusion :

//works
time.Sleep(1000 * time.Millisecond)

//fails
var i = 1000
time.Sleep(i * time.Millisecond)
Copier après la connexion

Le deuxième bloc de code ne parvient pas à se compiler en raison d'une incompatibilité de type. . Bien que les deux milliers dans le code semblent être des nombres entiers, ce n'est pas le cas.

Dans Go, les opérateurs nécessitent des opérandes du même type, à l'exception des opérateurs impliquant des décalages ou des constantes non typées. Pour notre cas, nous avons la multiplication, ce qui signifie que les opérandes doivent être identiques.

Dans la première ligne, 1000 est une constante non typée. Lorsqu'il est utilisé dans une opération, il est automatiquement converti dans le type de l'autre opérande, qui dans ce cas est time.Duration. Cependant, dans la deuxième ligne, i est une variable déclarée de type int, ce qui entraîne une incompatibilité de type.

Pour résoudre ce problème, nous devons convertir i en time.Duration avant d'effectuer la multiplication. Voici un exemple :

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)
Copier après la connexion

En convertissant i en time.Duration, la multiplication et l'heure suivante.L'appel de sommeil réussira désormais.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal