Fraction de la durée du sommeil en Go
Question :
Pourquoi les éléments suivants Go le code réussit à dormir pendant une durée fractionnée, tandis que le second échoue ?
// 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)
Réponse :
La différence réside dans le type de diviseur dans chaque ligne :
Pour faire fonctionner la deuxième ligne, vous doit convertir d en time.Duration :
s := time.Hour / time.Duration(d)
ou utiliser l'une des alternatives suivantes manières :
Pour les valeurs qui ne peuvent pas être représentées dans le temps .Durée, telle que 73,5, l'heure. L'heure doit être convertie en float64 :
d := 73.5 s := time.Duration(float64(time.Hour) / d)
Considérations supplémentaires :
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!