Éviter la réallocation de mémoire dans un wrapper de fonction variadique
Pour résoudre le problème consistant à éviter une allocation de mémoire supplémentaire lors de l'ajout d'éléments à un wrapper de fonction variadique, considérez en utilisant append comme solution concise. Voici un extrait de code mis à jour :
<code class="go">func Debug(a ...interface{}) { if debug { fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...)...) } }</code>
Cette approche utilise la fonction append pour créer une nouvelle tranche en ajoutant le préfixe et le séparateur à la tranche existante de valeurs d'interface a. La syntaxe ... étend la tranche en éléments individuels, les transmettant efficacement à Fprintln.
En tirant parti de l'ajout, vous éliminez non seulement le besoin d'itérations de boucle explicites et d'allocation manuelle de mémoire, mais vous garantissez également que la tranche résultante ne contient que les éléments nécessaires, évitant ainsi une surcharge de mémoire inutile. Cette approche maintient la fonctionnalité du wrapper tout en optimisant ses performances et son utilisation de la mémoire.
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!