Salir de bucles anidados
Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 2 de 68.
Al trabajar con bucles anidados, una instrucción break normal solo sale del bucle más interno. Sin embargo, Go proporciona etiquetas que te permiten salir directamente de los bucles externos, lo que te da un control preciso sobre estructuras de bucles complejas.
Una etiqueta es un identificador seguido de dos puntos que se coloca antes de un bucle. Después, puedes usar break seguido del nombre de la etiqueta para salir de ese bucle específico, incluso desde dentro de bucles anidados.
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 1 {
break outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
}En este ejemplo, cuando se cumple la condición i == 1 && j == 1, break outer sale inmediatamente de los bucles interno y externo. Esto resulta especialmente útil al buscar en estructuras de datos bidimensionales, cuando quieres dejar de buscar por completo en cuanto encuentras lo que buscas.
Desafío
FácilEn este desafío, practicarás el uso de instrucciones break con etiquetas para salir de bucles anidados mientras buscas en una cuadrícula 2D. Debes encontrar un número objetivo específico en la cuadrícula y dejar de buscar inmediatamente cuando lo encuentres.
Recibirás dos entradas:
- Una cadena que representa las dimensiones de la cuadrícula con el formato
"rows,cols"(por ejemplo,"3,4") - Una cadena que representa el número objetivo que debes buscar (por ejemplo,
"7")
Se te proporciona la siguiente cuadrícula 2D de números:
grid := [][]int{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
}Tu tarea es:
- Usar los valores que ya se leyeron por ti en el código anterior:
rowsycols(cuánto de la cuadrícula se debe buscar),targetygrid - Usar bucles anidados con una instrucción
breakcon etiqueta para buscar en la cuadrícula - Cuando encuentres el número objetivo, imprimir
"Found [target] at position ([row], [col])"y salir inmediatamente de ambos bucles usando la instrucciónbreakcon etiqueta - Si completas la búsqueda sin encontrar el objetivo, imprimir
"Target [target] not found"
La posición debe indicarse usando índices desde 0 (la primera fila es 0 y la primera columna es 0).
Pruébalo tú mismo
// TODO: Escribe tu código a continuación
// Usa bucles anidados con un break etiquetado para buscar el objetivo
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Flujo de control avanzado
Switch con `fallthrough`Salir de bucles anidadosContinuar un bucle específicoLa sentencia `goto`Repaso: Control de bucles avanzado4Proyecto: Lista de tareas sencilla
Configuración del proyectoAñadir una tarea2Estructuras y Métodos
Definición de métodos en estructurasReceptores de valorReceptores de punteroElegir receptoresMétodos vs FuncionesResumen - Comportamiento de estructuras5Mapas en profundidad
Mapas de StructsPunteros como valores de MapVerificación de Maps NilComparación de MapsResumen - Contador de frecuencia de palabras3Interfaces (Conceptos básicos)
¿Qué es una interfaz?Definir una interfazImplementar una interfazUso de tipos de interfazInterfaz vacíaAserciones de tipoType SwitchResumen: Formas y comportamientosPractica por tu cuenta: Compilador de Go online