Slices

¿Qué son los slices en programación?

Si bien los arreglos son una parte importante del lenguaje, es mas común el uso de slices. Un slice en cierta forma es un segmento de un arreglo.

El uso de arreglos tiene ciertas limitaciones, la mas importante es tal vez que una vez que se alcanza la capacidad del arreglo, no es posible agregar mas valores a este. En ese sentido los slices son mas flexibles. Es posible agregar, remover y copiar elementos de un slice a otro.

Para crear un slice hay que definir, su nombre, tipo y capacidad inicial. A partir de aquí podemos agregar valores.

Ejemplo del uso de slices en Go

package main

import "fmt"

func main() {
    var marcasDeCoches = make([]string, 2)
    marcasDeCoches[0] = "Mazda"
    marcasDeCoches[1] = "Toyota"
    fmt.Println(marcasDeCoches) // [Mazda Toyota]
}

¿Qué sucede si agregamos un valor mas a un slice en Go?

Hasta este momento no hemos visto mayor, problema, pero si intentamos agregar otro nuevo elemento se producirá una sobrecarga del slice.

En lugar de agregar otro elemento por su índice de referencia podemos usar la instrucción append que y asociarla a una nueva variable. Esto creará un nuevo slice con mayor capacidad sobre esta nueva variable.

Ejemplo de como agregar un nuevo valor a un slice en Go

package main

import "fmt"

func main() {
    var marcasDeCoches = make([]string, 2)
    marcasDeCoches[0] = "Mazda"
    marcasDeCoches[1] = "Toyota"
    fmt.Println(marcasDeCoches) // [Mazda Toyota]
    nuevoSlice := append(marcasDeCoches, "Nissan")
    fmt.Println(nuevoSlice) // [Mazda Toyota Nissan]
}

¿Cómo utilizar la función “append” para agregar mas valores a un slice en Go?

La función append es una función variadica, es decir que se le pueden enviar N argumentos al mismo tiempo.

nuevoSlice := append(marcasDeCoches, "Nissan", "Mitsubishi", "Suzuki", "Mazda")