Generische Funktionen in Go
Schnittstellentypen in Go können jeden Typ enthalten, ohne dass implementierte Methoden erforderlich sind, wodurch der Eindruck entsteht, dass sie als dienen Form generischer Funktionen. Dies ist jedoch nicht der Fall. Echte generische Funktionen, bei denen der Typ zur Kompilierzeit unbekannt ist, wurden in Go vor Version 1.18 nicht unterstützt.
In Go 1.18 wurden Generika eingeführt, die die Erstellung generischer Funktionen ermöglichten. Eine generische Funktion kann mit dem Schlüsselwort func gefolgt von in eckigen Klammern eingeschlossenen Typparametern definiert werden. Die Typparameter geben die von der generischen Funktion akzeptierten Typen an. Zum Beispiel:
func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } }
In diesem Beispiel ist T ein Typparameter, der jeden Typ darstellen kann. Die Funktion Print akzeptiert ein Slice vom Typ []T und druckt die Elemente des Slice.
Um die generische Funktion zu verwenden, können Sie ein Slice des gewünschten Typs als Argument übergeben:
// Passing a list of strings Print([]string{"Hello, ", "world\n"}) // Passing a list of integers Print([]int{1, 2})
Die Ausgabe des Programms wird sein:
Hello, world 12
Generische Funktionen bieten eine prägnante und sichere Möglichkeit, Code zu schreiben, der auf verschiedenen Typen ohne funktionieren kann Einbußen bei der Typensicherheit.
Das obige ist der detaillierte Inhalt vonWie ermöglichen Generics echte generische Funktionen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!