Maison > développement back-end > Golang > Pourquoi ne puis-je pas multiplier « time.Millisecond » par un « int » dans Go ?

Pourquoi ne puis-je pas multiplier « time.Millisecond » par un « int » dans Go ?

DDD
Libérer: 2024-11-12 08:57:02
original
658 Les gens l'ont consulté

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

Confusion avec time.Millisecond * int

En Go, les opérateurs nécessitent des opérandes de types identiques sauf si l'opération implique des décalages ou des constantes non typées. Sinon, si un opérande est une constante non typée (par exemple, un littéral entier), il est converti dans le type de l'autre opérande.

Considérez les exemples suivants :

// Works because 1000 is an untyped constant and is converted to `time.Duration`.
time.Sleep(1000 * time.Millisecond)
Copier après la connexion

Cependant, le code suivant échoue :

// Fails because `v` is an `int` and `time.Duration` are different types.
var v = 1000
time.Sleep(v * time.Millisecond)
Copier après la connexion

Pour résoudre ce problème, convertissez la variable int v en time.Duration avant de l'utiliser dans la fonction Sleep :

time.Sleep(time.Duration(v) * time.Millisecond)
Copier après la connexion

Cette conversion rend les types d'opérandes identiques, permettant à l'opération de réussir.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal