Convertir efficacement des tranches numériques dans Go
Travailler avec des tranches numériques dans Go implique souvent la nécessité de les convertir entre différents types numériques. Cette question aborde le problème de la conversion efficace d'une tranche de type float32 en float64.
Approche itérative
Itérer sur des éléments individuels et convertir explicitement leurs types est une approche courante. Bien que simple, cela peut s’avérer inefficace pour les grosses tranches. Cependant, en Go, cette technique itérative est généralement la plus efficace en raison de la nature de bas niveau du langage.
Astuces d'optimisation
Pour optimiser l'approche itérative, pensez à utiliser la boucle de plage intégrée au lieu de la boucle for avec indexation. range évite la surcharge de vérification des limites, ce qui entraîne une conversion plus rapide.
func convertTo64(ar []float32) []float64 { newar := make([]float64, len(ar)) var v float32 var i int for i, v = range ar { newar[i] = float64(v) } return newar }
Exemple d'utilisation
Le code suivant démontre l'utilisation de la méthode de conversion optimisée :
slice32 := make([]float32, 1000) slice64 := convertTo64(slice32)
Hypothèses incorrectes
Alors que cette question suggère qu'il peut y avoir des fonctions intégrées pour la conversion de tranches, ce n'est pas le cas. Toutes les fonctions prédéfinies pour de telles opérations reposent en fin de compte sur des itérations en coulisses.
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!