Go: Slice

Go dispone de Slice, es un wrapper (un envoltorio) para poder hacer operaciones con un array sin modificarlo.

Os pongo un ejemplo de como crear un slice:

a := [5]int{76, 77, 78, 79, 80}
var b []int = a[1:4] // crea un slice de a[1] to a[3]

Recuera que un slice nunca almacena datos propios, hace referencia a los datos de un array, cualquier modificación que se haga en esos datos modificará los datos del array.

Puedes crear un slice con todos los elementos de un array:

a := [5]int{76, 77, 78, 79, 80}
slice1 := a[:]

Los arrays no admiten que se puedan agregar nuevos elementos, pero los slices sí con la instrucción append:

slice1 = append(slice1,150)

Los slices pueden ser representados de manera interna como una estructura:

type slice struct { 
    Length        int
    Capacity      int
    ZerothElement *byte
}

Los slices también pueden ser multidimensionales.

El uso de slices y arrays compromete mucha memoria, debes usarlos con cuidado sin abusar de ellos y limpiando los que no utilices.

Comentarios