Junior — Middle
¿Qué sucede cuando se llama al método append y por qué devuelve un nuevo segmento?
sobes.tech AI
Respuesta de la IA
En Go, el método append se utiliza para agregar elementos a un slice. Cuando se llama a append, sucede lo siguiente:
- Si el slice tiene suficiente capacidad (capacity), el nuevo elemento simplemente se añade al array existente, y se devuelve un slice que apunta a la parte actualizada del array.
- Si la capacidad no es suficiente, se crea un nuevo array con una capacidad aumentada, en el cual se copian los elementos antiguos y luego se añade el nuevo elemento.
Por eso, append devuelve un nuevo slice porque:
- En caso de expansión de capacidad, se devuelve un slice que apunta al nuevo array.
- Cuando hay suficiente capacidad, se devuelve un slice que apunta al mismo array, pero con una longitud aumentada.
Es importante siempre asignar el resultado de append de nuevo a la variable, para no perder la referencia al slice actualizado:
s := []int{1, 2, 3}
s = append(s, 4) // s ahora apunta a un slice con los elementos [1 2 3 4]
De esta manera, append devuelve un nuevo slice porque internamente puede cambiar el array base, y es necesario actualizar la referencia a él.