Es común agregar nuevos elementos a un Slice, por lo que Go proporciona una función de adición:
func append (s [] T, vs ... T) [] T
El primer parámetro s de append es un slice de tipo T, y el resto son valores T para agregar al slice.
El valor resultante de append es un segmento que contiene todos los elementos del segmento original más los valores proporcionados.
Si la capacidad es menor a los elementos a agregar esta se ajustara automáticamente. El Slice devuelto apuntará a la matriz recién asignada.
Como podemos iterar por nuestro slice? para eso esta el for que itera sobre un slice o un mapa. Para esto tambien debemos utilizar la función range, veamos un ejemplo:
package main
import "fmt"
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
func main() {
for i, v := range pow {
fmt.Printf("2**%d = %d\n", i, v)
}
}
Cuando se itera por un slice, se devuelven dos valores para cada iteración. El primero es el índice, y el segundo es una copia del elemento en ese índice.
Puede omitir el índice o el valor asignándole a _.
for i, _ := range pow
for _, value := range pow
Si solo desea el índice, puede omitir la segunda variable.
for i: = rango pow
veamos un ejemplo:
package main
import "fmt"
func main() {
pow := make([]int, 10)
for i := range pow {
pow[i] = 1 << uint(i) // == 2**i
}
for _, value := range pow {
fmt.Printf("%d\n", value)
}
}