Maison >développement back-end >Golang >Comment créer des types personnalisés à l'aide des génériques Golang ?

Comment créer des types personnalisés à l'aide des génériques Golang ?

WBOY
WBOYoriginal
2024-06-02 10:45:59639parcourir

如何使用 Golang 泛型创建自定义类型?

Créez des types personnalisés à l'aide des génériques Golang

Golang 1.18 introduit les génériques, un moyen de créer du code paramétré typé qui permet de créer un code hautement réutilisable et maintenable. Cela nous permet de définir des types avec des espaces réservés de type qui peuvent être remplacés par des types spécifiques lors de la création d'instances du type.

Définir des types personnalisés

Pour créer un type personnalisé, vous pouvez utiliser le mot-clé type, suivi du nom du type et des paramètres de type. Les paramètres de type sont placés entre crochets a8093152e673feb7aba1828c43532094. Par exemple, nous pouvons créer un type appelé Pair qui stocke une paire de valeurs de n'importe quel type : type 关键字,后跟类型名称和类型参数。类型参数用尖括号 a8093152e673feb7aba1828c43532094 括起来。例如,我们可以创建名为 Pair 的类型,它存储任意类型的一对值:

type Pair[T1, T2 any] struct {
    first  T1
    second T2
}

其中:

  • T1T2 是类型参数,表示可以由任何类型替换。
  • struct 定义了一个包含两个字段 firstsecond 的结构体。

创建类型实例

一旦定义了自定义类型,就可以通过指定类型参数来创建它的实例。例如,要创建一个 Pair 实例来存储字符串和整数,我们可以使用以下代码:

pair := Pair[string, int]{"John", 30}

实战案例

泛型在 Golang 中有许多实际应用。一个常见案例是创建泛型函数或方法,可以在各种类型上操作。例如,我们可以创建一个 Swap 函数,它可以在两种不同的类型上交换值:

func Swap[T1, T2 any](a *T1, b *T2) {
    temp := *a
    *a = *b
    *b = temp
}

要使用此函数,我们可以传递两种不同类型的指针作为参数:

a := 5
b := "Hello"
Swap(&a, &b)
fmt.Println(a, b) // 输出:"Hello" 5

注意事项

  • 类型参数必须使用 anyrrreee
  • où :
    • T1 et T2 est un paramètre de type, indiquant qu'il peut être remplacé par n'importe quel type.
    • struct définit une structure contenant deux champs : first et second.
    🎜🎜Création d'instances de type🎜🎜Une fois qu'un type personnalisé est défini, des instances de celui-ci peuvent être créées en spécifiant des paramètres de type. Par exemple, pour créer une instance Pair pour stocker des chaînes et des entiers, nous pouvons utiliser le code suivant : 🎜rrreee🎜Exemples pratiques🎜🎜Les génériques ont de nombreuses applications pratiques dans Golang. Un cas courant consiste à créer des fonctions ou des méthodes génériques pouvant fonctionner sur différents types. Par exemple, nous pouvons créer une fonction Swap qui échange les valeurs sur deux types différents : 🎜rrreee🎜Pour utiliser cette fonction, nous pouvons passer des pointeurs de deux types différents comme arguments : 🎜rrreee 🎜Notes🎜 Les paramètres
      🎜Type doivent utiliser le mot-clé any, qui indique que le paramètre peut être de n'importe quel type. 🎜🎜Les paramètres de type ne peuvent pas être des alias de type ou des interfaces. 🎜🎜Les paramètres de type ne peuvent pas avoir de contraintes de type. 🎜🎜

    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