Wo a
ist das Slice und i
der Index des Elements, das Sie löschen möchten:
a = append(a[:i], a[i+1:]...)
...
ist die Syntax für verschiedene Argumente in Go.
Grundsätzlich werden beim Definieren einer Funktion alle Argumente, die Sie übergeben, in einem Slice dieses Typs zusammengefasst. Auf diese Weise können Sie so viele Argumente übergeben, wie Sie möchten (z. B. fmt.Println
können Sie so viele Argumente verwenden, wie Sie möchten).
Wenn Sie eine Funktion aufrufen , ...
geschieht das Gegenteil: Sie entpackt ein Slice und übergibt es als separate Argumente an eine variable Funktion.
Also, was diese Zeile macht:
a = append(a[:0], a[1:]...)
Ist im Wesentlichen:
a = append(a[:0], a[1], a[2])
Nun fragen Sie sich vielleicht, warum nicht einfach
a = append(a[1:]...)
Nun, die Funktionsdefinition von append
ist
func append(slice []Type, elems ...Type) []Type
Das erste Argument muss also ein Slice des richtigen Typs sein, das zweite Argument ist das Variadic. Wir übergeben also ein leeres Slice und entpacken dann den Rest des Slice, um die Argumente auszufüllen.