Maison  >  Article  >  développement back-end  >  Les fonctions variadiques de Go peuvent-elles être rendues plus génériques ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 19:57:30957parcourir

 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>

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>

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>

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>

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!

Déclaration:
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