Heim >Backend-Entwicklung >Golang >Wie erstelle ich benutzerdefinierte Typen mit Golang-Generika?

Wie erstelle ich benutzerdefinierte Typen mit Golang-Generika?

WBOY
WBOYOriginal
2024-06-02 10:45:59640Durchsuche

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

Erstellen Sie benutzerdefinierte Typen mit Golang-Generika.

Golang 1.18 führt Generika ein, eine Möglichkeit, typisierten parametrisierten Code zu erstellen, der dabei hilft, hoch wiederverwendbaren und wartbaren Code zu erstellen. Es ermöglicht uns, Typen mit Typplatzhaltern zu definieren, die beim Erstellen von Instanzen des Typs durch bestimmte Typen ersetzt werden können.

Benutzerdefinierte Typen definieren

Um einen benutzerdefinierten Typ zu erstellen, können Sie das Schlüsselwort type verwenden, gefolgt vom Typnamen und den Typparametern. Typparameter werden in spitze Klammern a8093152e673feb7aba1828c43532094 eingeschlossen. Zum Beispiel können wir einen Typ namens Pair erstellen, der ein Wertepaar eines beliebigen Typs speichert: 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
  • wobei:
    • T1 und T2 ist ein Typparameter, der angibt, dass er durch einen beliebigen Typ ersetzt werden kann.
    • struct definiert eine Struktur mit zwei Feldern: first und second.
    🎜🎜Erstellen von Typinstanzen🎜🎜Sobald ein benutzerdefinierter Typ definiert ist, können Instanzen davon durch Angabe von Typparametern erstellt werden. Um beispielsweise eine Pair-Instanz zum Speichern von Zeichenfolgen und Ganzzahlen zu erstellen, können wir den folgenden Code verwenden: 🎜rrreee🎜Praktische Beispiele🎜🎜Generika haben in Golang viele praktische Anwendungen. Ein häufiger Fall besteht darin, generische Funktionen oder Methoden zu erstellen, die auf verschiedene Typen angewendet werden können. Zum Beispiel können wir eine Swap-Funktion erstellen, die Werte auf zwei verschiedenen Typen austauscht: 🎜rrreee🎜Um diese Funktion zu verwenden, können wir Zeiger zweier verschiedener Typen als Argumente übergeben: 🎜rrreee 🎜Notizen🎜
      🎜Typparameter müssen das Schlüsselwort any verwenden, das angibt, dass der Parameter einen beliebigen Typ haben kann. 🎜🎜Typparameter können keine Typaliase oder Schnittstellen sein. 🎜🎜Typparameter dürfen keine Typeinschränkungen haben. 🎜🎜

    Das obige ist der detaillierte Inhalt vonWie erstelle ich benutzerdefinierte Typen mit Golang-Generika?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn