Maison  >  Article  >  développement back-end  >  Comment les génériques Golang étendent-ils la réutilisabilité des fonctions ?

Comment les génériques Golang étendent-ils la réutilisabilité des fonctions ?

WBOY
WBOYoriginal
2024-04-16 17:15:01694parcourir

Les génériques Go sont une fonctionnalité qui rend le code réutilisable via des types paramétrés, notamment : Collections de type sécurisé : vous pouvez créer des collections qui stockent des éléments de différents types. Fonction de comparaison universelle : peut comparer n’importe quel type qui implémente l’interface comparable.

Comment les génériques Golang étendent-ils la réutilisabilité des fonctions ?

Go Generics : un outil puissant pour étendre la réutilisabilité des fonctions

Introduction

Introduits dans Go 1.18, les génériques sont une fonctionnalité puissante qui permet aux développeurs de créer du code réutilisable au lieu d'avoir à écrire des fonctions à plusieurs reprises. différents types. Cela facilite l’écriture d’un code clair et maintenable.

Syntaxe

Les génériques Go utilisent des crochets angulaires pour déclarer les paramètres de type. Par exemple :

func Max[T any](a, b T) T {
    if a > b {
        return a
    }
    return b
}

Dans ce cas, T est un paramètre de type et peut être de n'importe quel type. La fonction Max renvoie le plus grand de a et b. T 是一个类型参数,可以是任何类型。Max 函数将返回 ab 中较大者。

实战案例

1. 类型安全的集合

泛型可以使用户创建类型安全的集合,可以存储不同类型的元素。以下示例创建了一个类型化切片:

type StringSlice []string
func (s StringSlice) Add(item string) {
    s = append(s, item)
}

现在,我们可以使用这个切片来存储字符串,而不用担心类型转换错误:

func main() {
    var names StringSlice
    names.Add("Alice")
    names.Add("Bob")
}

2. 通用的比较函数

泛型可用于编写通用的比较函数,可以对任意类型的两个元素进行比较:

func Equal[T comparable](a, b T) bool {
    return a == b
}

此函数可以用于比较任何实现了 comparable

Cas pratiques

1. Collections de type sécurisé

🎜🎜Les génériques permettent aux utilisateurs de créer des collections de type sécurisé pouvant stocker des éléments de différents types. L'exemple suivant crée une tranche typée : 🎜
fmt.Println(Equal(1, 2))
fmt.Println(Equal("foo", "bar"))
🎜 Maintenant, nous pouvons utiliser cette tranche pour stocker des chaînes sans nous soucier des erreurs de conversion de type : 🎜rrreee🎜🎜 2. Fonctions de comparaison génériques 🎜🎜🎜Les génériques peuvent être utilisés pour écrire des fonctions de comparaison génériques. peut comparer deux éléments de n'importe quel type : 🎜rrreee🎜 Cette fonction peut être utilisée pour comparer n'importe quel type qui implémente l'interface comparable. Par exemple : 🎜rrreee🎜🎜Conclusion🎜🎜🎜Go Generics est une fonctionnalité puissante qui permet aux développeurs de créer du code réutilisable et facile à maintenir. En paramétrant les types, les génériques rendent les fonctions et les types plus généraux et aident à éliminer le code en double. 🎜

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