Maison > développement back-end > Golang > Comment transmettre des tranches de chaîne aux paramètres variadiques d'interface vides ?

Comment transmettre des tranches de chaîne aux paramètres variadiques d'interface vides ?

DDD
Libérer: 2024-11-06 19:35:02
original
825 Les gens l'ont consulté

How to Pass String Slices to Empty Interface Variadic Parameters?

Passer des tranches de chaîne à des paramètres variadiques d'interface vides

Passer une tranche de chaînes à un paramètre variadique d'interface vide pose un défi en raison de l'incapacité pour affecter directement la tranche au paramètre. Cela nécessite une copie fastidieuse avec des allocations multiples, ce qui en fait une solution inadaptée.

Approches alternatives :

  1. Fonction de conversion personnalisée : Créez une fonction qui accepte une tranche de chaîne et renvoie une tranche d'interface vide correspondante. Bien que cette méthode nécessite plusieurs implémentations pour différents types de tranches, elle offre une approche plus concise et réutilisable.
  2. Réflexion : Utilisez la réflexion pour créer une fonction générique qui convertit n'importe quel type de tranche en une interface vide. tranche. Cependant, cette méthode introduit une pénalité de performances d'exécution en raison de sa nature réfléchissante.

Exemple de code :

<code class="go">// Converts a string slice to an empty interface slice
func StringSliceToInterfaceSlice(values []string) []interface{} {
    var valuesInterface []interface{}
    for _, value := range values {
        valuesInterface = append(valuesInterface, value)
    }
    return valuesInterface
}

// Using reflection for generic slice conversion
func ReflectSliceToInterfaceSlice(slice reflect.Value) []interface{} {
    var valuesInterface []interface{}
    for i := 0; i < slice.Len(); i++ {
        valuesInterface = append(valuesInterface, slice.Index(i).Interface())
    }
    return valuesInterface
}</code>
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal