Iteración de colecciones con range
Uso de range con slices, maps y strings
Iteración de colecciones con range es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
¿Qué es range?
range es una forma especial del bucle for que itera sobre arrays, slices, mapas, cadenas y canales. Devuelve un índice (o una clave) y un valor en cada iteración.
range sobre un slice
Devuelve el índice y una copia del elemento:
package main
import "fmt"
func main() {
fruits := []string{"apple", "banana", "cherry"}
for i, fruit := range fruits {
fmt.Printf("%d: %s\n", i, fruit)
}
}range sobre un array
Funciona igual que con los slices. Los elementos del array se copian en cada iteración:
package main
import "fmt"
func main() {
nums := [3]int{10, 20, 30}
for _, v := range nums {
fmt.Println(v)
}
}range sobre un map
Devuelve la clave y el valor en un orden aleatorio:
package main
import "fmt"
func main() {
capitals := map[string]string{
"France": "Paris",
"Japan": "Tokyo",
}
for country, city := range capitals {
fmt.Printf("%s -> %s\n", country, city)
}
}range sobre un string
Itera sobre puntos de código Unicode (rune), no sobre bytes. El índice es la posición en bytes donde comienza el rune:
package main
import "fmt"
func main() {
for i, r := range "héllo" {
fmt.Printf("%d: %c\n", i, r)
}
}Descartar el índice
Use _ para ignorar el índice cuando solo necesite los valores:
package main
import "fmt"
func main() {
total := 0
for _, v := range []int{1, 2, 3, 4, 5} {
total += v
}
fmt.Println(total) // 15
}range solo con índice
Omitir el valor proporciona únicamente el índice. Resulta útil para realizar modificaciones in situ:
package main
import "fmt"
func main() {
s := []int{1, 2, 3}
for i := range s {
s[i] *= 2
}
fmt.Println(s) // [2 4 6]
}range sobre un canal
range lee de un canal hasta que este se cierra:
package main
import "fmt"
func main() {
ch := make(chan int, 3)
ch <- 1; ch <- 2; ch <- 3
close(ch)
for v := range ch {
fmt.Println(v)
}
}La trampa de la variable del bucle
La variable de range se reutiliza en cada iteración; capturar su dirección en una goroutine o closure es un error clásico:
package main
import "fmt"
func main() {
nums := []int{1, 2, 3}
funcs := make([]func(), 3)
for i, v := range nums {
v := v // shadow with a copy
funcs[i] = func() { fmt.Println(v) }
}
for _, f := range funcs { f() } // 1 2 3
}Modificar elementos de un slice
El valor de range es una copia. Para modificar el elemento, use el índice:
package main
import "fmt"
func main() {
s := []int{10, 20, 30}
for i := range s {
s[i]++
}
fmt.Println(s) // [11 21 31]
}Comprobación rápida
Al recorrer un string, ¿de qué tipo es la variable de valor?
Recapitulación: range
Conclusiones principales:
rangefunciona con slices, arrays, maps, strings y canales- Devuelve (índice, valor); cualquiera de los dos puede descartarse con
_ - Los valores de range son copias; modifique los elementos mediante el índice
- Los strings producen runes, no bytes
- El orden de iteración de los maps es aleatorio
Ejercicio práctico
Use range para calcular la suma de todos los valores de un map[string]int y mostrar cada entrada junto con el total.
Preguntas frecuentes
¿La lección «Iteración de colecciones con range» es gratis?
Sí — el texto completo de «Iteración de colecciones con range» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Iteración de colecciones con range»?
Uso de range con slices, maps y strings Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Iteración de colecciones con range»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Arrays: colecciones de longitud fija
- Slices: listas dinámicas
- Maps: almacenes clave-valor
- Iteración de colecciones con range