Maison > développement back-end > Golang > le corps du texte

Comment pouvez-vous ajouter des éléments à un wrapper de fonctions variadiques sans réallocation de mémoire ?

Barbara Streisand
Libérer: 2024-11-03 05:45:30
original
324 Les gens l'ont consulté

How Can You Append Items to a Variadic Function Wrapper Without Memory Reallocation?

Wrappers de fonctions variadiques : ajout d'éléments sans réallocation de mémoire

Les fonctions variadiques offrent un moyen pratique de transmettre un nombre arbitraire d'arguments à une fonction. Cependant, lors de l'encapsulation de fonctions variadiques, l'ajout d'éléments supplémentaires peut entraîner une allocation de mémoire. Cet article examine différentes approches pour éviter une allocation de mémoire inutile dans de tels wrappers.

Approches inefficaces

Tentative d'étendre la tranche variadique directement à l'aide de l'opérateur points de suspension "..." (Approche 1) peut entraîner des erreurs de type « trop d'arguments » ou des problèmes de non-concordance de type (approche 2).

L'approche 3 alloue une nouvelle tranche pour accueillir les éléments supplémentaires, ce qui peut être inefficace pour les opérations de journalisation ou de débogage fréquentes. .

Approche efficace

Une approche plus efficace consiste à utiliser la fonction append pour agrandir dynamiquement la tranche sans réallocation. La fonction append renvoie une nouvelle tranche avec les éléments supplémentaires ajoutés à la tranche existante.

<code class="go">func Debug(a ...interface{}) {
    if debug {
        fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...)...)
    }
}</code>
Copier après la connexion

Cette ligne ajoute le préfixe et le séparateur à une tranche créée à partir des arguments variadiques d'origine (a) et transmet le tranche résultante dans fmt.Fprintln. En tirant parti de la fonction append, cette approche évite la réallocation de mémoire tout en satisfaisant les exigences de paramètres de la fonction variadique.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!