fraction de temps de sommeil durée dans go
question:
Pourquoi le code suivant dort-il avec succès pour une durée de fraction S: = temps.hour / 73.0 fmt.println ("Sleeping:", s) Temps. // Échec D: = 73.0 S: = temps.hour / d fmt.println ("Sleeping:", s) Temps. // Erreur: opération non valide: Time.hour / D (Types non correspondants Time.Duration et Float64)
// 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:
Success:
var d Time.Duration = 73.0
// 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)
pour les valeurs qui ne peuvent pas être représentées dans le temps.Duration, tel que 73.5, le temps. à float64:
d := 73.5 s := time.Duration(float64(time.Hour) / d)Constantes comme Time.hour ont un type qui ne peut pas être modifié, donc ils ne peuvent pas être utilisés directement avec non-compatible Types.
Constantes non typées:
Les constantes non typées prennent le type du contexte dans lequel ils sont utilisés. Dans la première ligne, 73.0 s'adapte à la conversion de Time.Duration. types.Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3