Mit Generika in Go können Sie Code erstellen, der mit mehreren Datentypen funktioniert. Die Syntax ist Typname[T any] struct { ... }, wobei T ein generischer Parameter ist. Ein Beispiel für das Kopieren eines Slice wird mit der Funktion func CopySlice[T any](dst, src []T) gezeigt. Zu den Vorteilen von Generika gehören die Wiederverwendung von Code, weniger Typkonvertierungen und Typsicherheit.
Erweitern von Sprachfunktionen mithilfe von Generika in Go
Generika ist eine Programmiersprachenfunktion, mit der Sie Code erstellen können, der mit verschiedenen Datentypen funktioniert. In Go 1.18 und höher werden Generika unterstützt. In diesem Artikel erfahren Sie, wie Sie mithilfe von Generika neue Funktionen zur Go-Sprache hinzufügen.
Syntax
Der generische Typ ist wie folgt definiert:
type name[T any] struct { // ... }
Wobei:
name
: Typname name
:类型名称T any
:泛型类型参数实战案例
让我们以创建一个具有复制任意类型切片的泛型函数为例:
func CopySlice[T any](dst, src []T) { n := len(src) if cap(dst) < n { dst = make([]T, n) } copy(dst, src) }
在这个函数中:
[T any]
表示函数接受任意类型数据的切片copy(dst, src)
复制 src
切片中的元素到 dst
切片使用方法
现在您可以使用我们创建的 CopySlice
T any
: Generische TypparameterPraktischer Fall
intSlice := []int{1, 2, 3} floatSlice := []float64{1.1, 2.2, 3.3} newIntSlice := make([]int, len(intSlice)) CopySlice(newIntSlice, intSlice) newFloatSlice := make([]float64, len(floatSlice)) CopySlice(newFloatSlice, floatSlice)
[T any]
bedeutet, dass die Funktion akzeptiert jeden Datentyp Slicecopy(dst, src)
Kopieren Sie die Elemente im Slice src
in den Slice dst
Jetzt können Sie die von uns erstellte Funktion CopySlice
verwenden: rrreee
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Generika, um Golang neue Funktionen hinzuzufügen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!