Maison  >  Article  >  développement back-end  >  Comment implémenter la surcharge de fonctions dans Golang ?

Comment implémenter la surcharge de fonctions dans Golang ?

WBOY
WBOYoriginal
2024-04-29 17:21:01391parcourir

Le langage Go ne prend pas en charge la surcharge de fonctions traditionnelle, mais des effets similaires peuvent être obtenus en : utilisant des fonctions nommées : créant des noms uniques pour les fonctions avec différents paramètres ou types de retour en utilisant des génériques (Go 1.18 et supérieur) : créant des noms uniques pour différents types ; de paramètres Une version unique de la fonction.

Comment implémenter la surcharge de fonctions dans Golang ?

Implémentation de la surcharge de fonction Golang

Dans Golang, la surcharge de fonction au sens traditionnel n'est pas prise en charge, c'est-à-dire que le même nom de fonction a plusieurs versions avec différentes listes de paramètres ou types de retour. Cependant, nous pouvons réaliser quelque chose de similaire à la surcharge de fonctions en :

1. En utilisant des fonctions nommées

Nous pouvons créer des noms uniques pour les fonctions avec différentes listes de paramètres ou types de retour, par exemple :

func Sum(a, b int) int {
    return a + b
}

func SumFloat(a, b float64) float64 {
    return a + b
}

2. >= Go 1.18)

Go 1.18 a introduit les génériques, nous permettant de créer une version unique d'une fonction au moment de la compilation pour différents types d'arguments. Par exemple :

func Sum[T numeric](a, b T) T {
    return a + b
}

Cas pratique

Supposons que nous devions créer deux fonctions pour calculer la longueur, une fonction est utilisée pour calculer la longueur de la chaîne et l'autre fonction est utilisée pour calculer la longueur du tableau.

Utilisez les fonctions nommées

func StringLength(str string) int {
    return len(str)
}

func ArrayLength(arr []int) int {
    return len(arr)
}

Utilisez des génériques (>= Go 1.18)

func Length[T any](data T) int {
    return len(data)
}

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