Translate

domingo, 15 de septiembre de 2019

Slice en Go parte 2

Continuamos con Slice en go

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)
}
}