Lección 9 · 9 de 20
Arrays · Go
Guarde varios valores del mismo tipo en un array de Go: tamaño fijo, índices, len, recorrido con for, copia al asignar y comparación con ==.

Un array guarda un número fijo de valores del mismo tipo. var rainfall [7]float64 reserva siete números, uno por día, y todos empiezan en su valor cero, 0. La longitud forma parte del tipo: [7]float64 y [8]float64 son tipos distintos.
Cada elemento se alcanza por su índice, que empieza en 0: rainfall[3] = 11 es el cuarto día, el jueves. fmt.Println escribe el array entero entre corchetes. En un literal, [...] deja que Go cuente los elementos: days tiene 7, como dice len(days).
El for clásico recorre los índices de 0 a len(rainfall)-1: suma la lluvia en total y guarda en wettest el índice del día más lluvioso. Como days sigue el mismo orden, days[wettest] da su nombre: Thu.
Asignar un array lo copia entero: backup := rainfall crea otro array, y cambiar backup[0] no toca el original. Por eso == da false: dos arrays del mismo tipo se pueden comparar, y son iguales solo si lo son todos sus elementos. En la práctica se usan más los slices, de la lección siguiente, que pueden crecer.
Código · main.go
package mainimport "fmt"func main() { // An array has a fixed length, and it is part of its type. var rainfall [7]float64 rainfall[0] = 2.5 rainfall[3] = 11 rainfall[6] = 4.25 fmt.Println("Rainfall:", rainfall) // [...] lets Go count the elements of the literal. days := [...]string{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"} fmt.Println("Days in a week:", len(days)) total, wettest := 0.0, 0 for i := 0; i < len(rainfall); i++ { total += rainfall[i] if rainfall[i] > rainfall[wettest] { wettest = i } } fmt.Printf("Total: %.2f mm\n", total) fmt.Println("Wettest day:", days[wettest]) // Assigning an array copies all of it. backup := rainfall backup[0] = 99 fmt.Println("Monday:", rainfall[0], "in the copy:", backup[0]) // Arrays of the same type can be compared with ==. fmt.Println("Same data?", backup == rainfall)}Salida · go run main.go
Rainfall: [2.5 0 0 11 0 0 4.25] Days in a week: 7 Total: 17.75 mm Wettest day: Thu Monday: 2.5 in the copy: 99 Same data? false
Para recordar
[n]tipoes un array denelementos;nno cambia.- Los índices van de
0alen(a)-1. [...]cuenta los elementos del literal.- Asignar un array copia todos sus elementos.
- Dos arrays del mismo tipo se comparan con
==.
Ejercicio
Añada un array [7]float64 con las temperaturas de la semana y escriba la media y el día más frío, con su nombre sacado de days.