Dónde a
está el segmento y i
es el índice del elemento que desea eliminar:
a = append(a[:i], a[i+1:]...)
...
es la sintaxis para argumentos variados en Go.
Básicamente, al definir una función, coloca todos los argumentos que pasa en una porción de ese tipo. Al hacerlo, puede pasar tantos argumentos como desee (por ejemplo, fmt.Println
puede tomar tantos argumentos como desee).
Ahora, cuando se llama a una función, ...
hace lo contrario: desempaqueta un segmento y los pasa como argumentos separados a una función variable.
Entonces, qué hace esta línea:
a = append(a[:0], a[1:]...)
Es esencial:
a = append(a[:0], a[1], a[2])
Ahora, te estarás preguntando, ¿por qué no solo hacer
a = append(a[1:]...)
Bueno, la definición de la función append
es
func append(slice []Type, elems ...Type) []Type
Entonces, el primer argumento tiene que ser un segmento del tipo correcto, el segundo argumento es el variadic, por lo que pasamos un segmento vacío y luego desempaquetamos el resto del segmento para completar los argumentos.