Desarrollador Go: pregunta de entrevista

¿Cómo funcionan los slices en Go?

Un slice de Go es un descriptor pequeño con un puntero a un array subyacente, una longitud y una capacidad. No es el array en sí, por lo que dos slices pueden compartir almacenamiento y ver los cambios de elementos del otro.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Al hacer slicing se crea un descriptor nuevo sobre el mismo array. append reutiliza ese array mientras haya capacidad; cuando se supera, Go asigna otro array, copia los elementos y los dos slices dejan de compartir memoria. La capacidad decide si una escritura se ve desde otro slice, por eso una respuesta que solo habla de longitud está incompleta.

Ejemplo

Si a := []int{1, 2, 3, 4} y b := a[:2], entonces b[0] = 9 también cambia a[0]. Pero si append añade suficientes elementos a b, puede asignarse otro array y los cambios posteriores ya no afectan a. Pasar un slice a una función copia la cabecera, no los elementos: la función puede mutar elementos compartidos pero no hacer crecer el slice del llamador.

Errores frecuentes

  • Suponer que cada append crea una copia independiente.
  • Devolver un subslice de un buffer grande y retener todo el array subyacente.
  • Hacer append dentro de una función y esperar que el llamador vea la nueva longitud.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Go