Où a
est la tranche et i
est l'index de l'élément que vous souhaitez supprimer:
a = append(a[:i], a[i+1:]...)
...
est la syntaxe des arguments variadiques dans Go.
Fondamentalement, lors de la définition d' une fonction, il place tous les arguments que vous passez dans une tranche de ce type. En faisant cela, vous pouvez passer autant d'arguments que vous le souhaitez (par exemple, vous fmt.Println
pouvez prendre autant d'arguments que vous le souhaitez).
Maintenant, lors de l' appel d' une fonction, ...
fait le contraire: il décompresse une tranche et les transmet comme arguments séparés à une fonction variadique.
Alors ce que fait cette ligne:
a = append(a[:0], a[1:]...)
est essentiellement:
a = append(a[:0], a[1], a[2])
Maintenant, vous vous demandez peut-être pourquoi ne pas simplement faire
a = append(a[1:]...)
Eh bien, la définition de la fonction append
est
func append(slice []Type, elems ...Type) []Type
Le premier argument doit donc être une tranche du type correct, le second argument est la variable, donc nous passons dans une tranche vide, puis décompressons le reste de la tranche pour remplir les arguments.