Los arrays son útiles al planificar el diseño detallado de la memoria y, a veces, pueden ayudar a evitar la asignación, pero principalmente son un bloque de construcción para los slice.
Existen grandes diferencias entre la forma en que funcionan los arrys en Go y C. En Go,
- Los arrys son valores. Asignar un array a otra copia todos los elementos.
- En particular, si pasa una matriz a una función, recibirá una copia de la matriz, no un puntero a ella.
- El tamaño de una matriz es parte de su tipo. Los tipos [10]int y [20]int son distintos.
Estas propiedades puede ser útiles pero también costosa; Si desea un comportamiento y eficiencia similares a los de C, puede pasar un puntero a la matriz.
func Sum(a *[3]float64) (sum float64) {
for _, v := range *a {
sum += v
}
return
}
array := [...]float64{7.0, 8.5, 9.1}
x := Sum(&array) // Note the explicit address-of operator
Pero este código no sigue el estilo Go, podemos hacer algo similar con Slice que veremos más adelante.