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

Les fonctions variadiques de Go peuvent-elles être rendues plus génériques ?

Susan Sarandon
Libérer: 2024-10-27 19:57:30
original
955 Les gens l'ont consulté

 Can Go's Variadic Functions Be Made More Generic?

Facilitation des fonctions variadiques génériques dans Go

Bien que Go ne fournisse pas de support inhérent pour la programmation générique ou la surcharge de fonctions, il permet un certain niveau de flexibilité lorsqu'il s'agit de gérer des fonctions variadiques. fonctions.

Considérez le scénario courant dans lequel vous disposez de plusieurs fonctions comme le suivant :

<code class="go">func (this Document) GetString(name string, defaults ...string) string {
    // ... Function implementation
}

func (this Document) GetInt(name string, defaults ...int) int {
    // ... Function implementation
}</code>
Copier après la connexion

Vous pouvez rencontrer une duplication de code dans ces fonctions. Existe-t-il un moyen de minimiser cette redondance ?

Oui, même si Go ne dispose pas de modèles génériques, vous pouvez exploiter l'interface{} pour fournir une solution générique.

<code class="go">func (this Document) Get(name string, defaults ...interface{}) interface{} {
    // ... Function implementation
    // This function returns `interface{}` instead of specific types.
}</code>
Copier après la connexion

Cette approche vous permet d'interagir avec la fonction de la manière suivante :

<code class="go">value := document.Get("index", 1).(int) // Type casting is required</code>
Copier après la connexion

Si vous préférez les valeurs nulles, vous pouvez utiliser cette approche :

<code class="go">value, ok := document.Get("index", 1).(int) // Returns `ok` to indicate type compatibility</code>
Copier après la connexion

Cependant, cette approche peut entraîner une surcharge d'exécution. Il est conseillé d'évaluer la structure de votre code et de déterminer si des fonctions distinctes ou une solution différente sont plus adaptées à vos besoins spécifiques.

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!