Heim >Backend-Entwicklung >Golang >Unterstützt Golang keine Generika?
Das Golang-Team ist der Ansicht, dass die Komplexität des Typsystems und der Laufzeit zu kostspielig ist, und hat noch kein gutes Design gefunden, das diese Komplexität ausgleichen kann.
Die integrierte Karte und das Slice haben tatsächlich den Geschmack von Generika. Darüber hinaus kann die Schnittstelle {} zum Erstellen von Containern verwendet werden, die den Effekt von Generika erzielen können. Daher gibt es bisher keine direkte Unterstützung für Generika. (Empfohlenes Lernen: GO )
Wir wollen anhand einiger Beispiele erklären, wie man mit diesem Problem in Golang umgeht. Schauen wir uns zunächst ein Blasensortierungsproblem an. Sortieren von Slices ganzzahliger Arrays.package main import ( "fmt" ) func bubbleSort(array []int) { for i := 0; i < len(array); i++ { for j := 0; j < len(array)-i-1; j++ { if array[j] > array[j+1] { array[j], array[j+1] = array[j+1], array[j] } } } } func main() { a1 := []int{3, 2, 6, 10, 7, 4, 6, 5} bubbleSort(a1) fmt.Println(a1) }
Die Ausgabe des obigen Beispiels lautet:
[2 3 4 5 6 6 7 10]Dann, wenn wir möchten, dass dieser bubbleSort gleichzeitig die Datensortierung vom Typ Float unterstützt oder nach sortiert die Länge der Zeichenfolge Was ist zu tun? In anderen Sprachen wie Java können wir bubbleSort definieren, um generische Sortierung zu unterstützen, aber das ist in Go nicht möglich. Um diesen Zweck zu erreichen, können wir die Schnittstelle verwenden, um dieselbe Funktionalität zu erreichen.
Für das obige Sortierproblem können wir die Sortierschritte analysieren:
Sehen Sie sich die Slice-Länge zum Durchqueren der Elemente an (Len); Vergleichen Sie zwei Elemente im Slice (Less); Entscheiden Sie basierend auf dem Vergleichsergebnis, ob die Elementpositionen vertauscht werden sollen (Swap). An diesem Punkt haben Sie vielleicht verstanden, dass wir die obige Funktion in eine Schnittstelle zerlegen können, die jeden Typ unterstützt, der mit den Funktionen in dieser Schnittstelle verarbeitet werden kann, solange sie diese Schnittstelle implementiert . Sortiert.Das obige ist der detaillierte Inhalt vonUnterstützt Golang keine Generika?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!