Continuar un bucle específico
Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 3 de 68.
Al igual que puedes usar etiquetas con break para salir de bucles específicos, Go también permite usar etiquetas con la instrucción continue. Un continue etiquetado omite la iteración actual del bucle especificado y salta a su siguiente iteración.
Esto es especialmente útil en bucles anidados cuando quieres omitir el resto de la iteración actual de un bucle externo desde dentro de un bucle interno, en lugar de simplemente continuar con el bucle interno.
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 0 {
continue outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
fmt.Println("End of outer loop iteration")
}En este ejemplo, cuando i == 1 && j == 0, la instrucción continue outer omite el resto de la iteración actual del bucle externo, incluido el bucle interno y el mensaje «End of outer loop iteration». Después, el programa pasa directamente a la siguiente iteración del bucle externo, donde i se convierte en 2.
Desafío
FácilEn este desafío, practicarás el uso de instrucciones continue etiquetadas para controlar la ejecución de bucles anidados. Estás construyendo un sistema de procesamiento de datos que debe omitir ciertas iteraciones del bucle externo según las condiciones encontradas en los bucles internos.
Recibirás dos entradas:
- Una cadena que representa el número de filas que se procesarán (por ejemplo,
"4") - Una cadena que representa un número de condición de omisión (por ejemplo,
"3")
Se te proporciona la siguiente matriz de datos bidimensional:
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
}Tu tarea es:
- Analizar el número de filas de la primera entrada para determinar cuántas filas se procesarán
- Analizar el número de condición de omisión de la segunda entrada
- Usar bucles anidados con un
continueetiquetado para procesar los datos - Para cada fila, comprobar cada valor de columna de esa fila
- Si encuentras el número de condición de omisión en cualquier columna de una fila, usa un
continueetiquetado para omitir el resto del procesamiento de esa fila y pasar a la siguiente fila - Para las filas que no contengan el número de condición de omisión, imprime
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]" - Para las filas que sí contengan el número de condición de omisión, imprime
"Skipping row [row_number] due to condition"
Los números de fila deben informarse utilizando índices basados en 0 (la primera fila es 0). Procesa únicamente el número de filas especificado en la primera entrada y comprueba únicamente las primeras 5 columnas de cada fila.
Pruébalo tú mismo
package main
import (
"fmt"
"strconv"
)
func main() {
// Leer entrada
var rowsInput string
var skipConditionInput string
fmt.Scanln(&rowsInput)
fmt.Scanln(&skipConditionInput)
// Analizar entradas
numRows, _ := strconv.Atoi(rowsInput)
skipCondition, _ := strconv.Atoi(skipConditionInput)
// Array de datos 2D proporcionado
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25},
}
// TODO: Escribe tu código debajo
// Usa bucles anidados con continue etiquetado para procesar los datos
// Comprueba cada fila en busca del número de la condición de omisión
// Imprime los mensajes apropiados según si se encuentra la condición
}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