Wie man zwei Slices in Go korrekt auf Element- und Längengleichheit vergleicht
Hallo zusammen! Ich habe vor kurzem angefangen, Go zu lernen, und bin auf eine scheinbar einfache Aufgabe gestoßen. Ich muss zwei Integer-Slices vergleichen, um zu prüfen, ob sie dieselben Elemente in derselben Reihenfolge enthalten (also ob sie "tief gleich" sind).
In Python würde ich einfach `if list1 == list2:` schreiben, und alles würde funktionieren. Aber in Go habe ich festgestellt, dass der `==`-Operator für Slices nicht funktioniert! Der Compiler gibt einen Fehler aus: `slice can only be compared to nil`.
Hier ist ein Beispiel meines Codes:
```go
package main
import "fmt"
func main() {
a := []int{1, 2, 3}
b := []int{1, 2, 3}
if a == b { // Kompilierungsfehler!
fmt.Println("Slices sind gleich")
}
}
```
Ich verstehe, dass ein Slice ein Referenztyp ist (ein Deskriptor mit einem Zeiger auf das zugrunde liegende Array, Länge und Kapazität). Aber wie vergleicht man dann korrekt den Inhalt zweier Slices? Muss ich jedes Mal eine Schleife schreiben? Oder gibt es eine eingebaute Funktion? Gibt es vielleicht einen Trick mit der Konvertierung in einen String oder über `reflect`?
Ich wäre dankbar für