Dov'è ala sezione ed iè l'indice dell'elemento che si desidera eliminare:
a = append(a[:i], a[i+1:]...)
... è la sintassi per argomenti variadici in Go.
Fondamentalmente, quando si definisce una funzione, inserisce tutti gli argomenti passati in una porzione di quel tipo. In questo modo, puoi passare tutti gli argomenti che desideri (ad esempio, fmt.Printlnpuoi prendere tutti gli argomenti che desideri).
Ora, quando si chiama una funzione, ...fa il contrario: decomprime una sezione e le passa come argomenti separati a una funzione variadica.
Quindi cosa fa questa linea:
a = append(a[:0], a[1:]...)
è essenzialmente:
a = append(a[:0], a[1], a[2])
Ora, ti starai chiedendo, perché non farlo
a = append(a[1:]...)
Bene, la definizione della funzione di appendè
func append(slice []Type, elems ...Type) []Type
Quindi il primo argomento deve essere una porzione del tipo corretto, il secondo argomento è la variabile, quindi passiamo in una sezione vuota e quindi scompattiamo il resto della sezione per riempire gli argomenti.