Generische Funktionen in Go: Ein umfassender Leitfaden
Beim Erkunden von Go stoßen Sie möglicherweise auf das Konzept einer leeren Benutzeroberfläche. Es ist ein leistungsstarkes Tool, das jeden Typ speichern kann und keine zusätzlichen Methoden erfordert.
Betrachten Sie dieses Beispiel:
func describe(i interface{}) { fmt.Printf("Type: %T | Value: %v\n", i, i) }
Wenn Sie verschiedene Typen zur Beschreibung übergeben, werden Typ und Wert ausgegeben:
"Type: int | Value: 5" // for i := 5 "Type: string | Value: test" // for i := "test"
Ist das also Gos Art, generische Funktionen zu implementieren? Nicht ganz. Ab Go 1.18 können Sie nun echte generische Funktionen schreiben. Hier ist ein Beispiel:
package main import ( "fmt" ) // T can be any type func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } } func main() { // Passing list of string works Print([]string{"Hello, ", "world\n"}) // You can pass a list of int to the same function as well Print([]int{1, 2}) }
Ausgabe:
Hello, world 12
Diese generische Funktion Print kann Slices jeden Typs verarbeiten und bietet einen vielseitigeren und typsichereren Ansatz für die generische Programmierung.
Das obige ist der detaillierte Inhalt vonSind die leeren Schnittstellen von Go oder die Generics von Go 1.18 die wahre Implementierung generischer Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!