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.
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 <>. Par exemple, nous pouvons créer un type appelé Pair
qui stocke une paire de valeurs de n'importe quel type : type
关键字,后跟类型名称和类型参数。类型参数用尖括号 <> 括起来。例如,我们可以创建名为 Pair
的类型,它存储任意类型的一对值:
type Pair[T1, T2 any] struct { first T1 second T2 }
其中:
T1
和 T2
是类型参数,表示可以由任何类型替换。struct
定义了一个包含两个字段 first
和 second
的结构体。一旦定义了自定义类型,就可以通过指定类型参数来创建它的实例。例如,要创建一个 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
any
rrreeeT1
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
. 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 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!