Menu
Coddy logo textTech

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 te permite usar etiquetas con la sentencia continue. Un continue con etiqueta omite la iteración actual del bucle especificado y salta a su siguiente iteración.

Esto es particularmente ú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 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 sentencia continue outer omite el resto de la iteración actual del bucle externo, incluyendo el bucle interno y el mensaje "End of outer loop iteration". El programa luego pasa directamente a la siguiente iteración del bucle externo donde i se convierte en 2.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

challenge icon

Desafío

Fácil

En este desafío, practicarás el uso de sentencias continue con etiquetas para controlar la ejecución de bucles anidados. Estás construyendo un sistema de procesamiento de datos que necesita omitir ciertas iteraciones del bucle externo basándose en condiciones encontradas en los bucles internos.

Recibirás dos entradas:

  • Una cadena que representa el número de filas a procesar (por ejemplo, "4")
  • Una cadena que representa un número de condición de omisión (por ejemplo, "3")

Se te proporciona el siguiente array de datos 2D:

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:

  1. Analizar el número de filas de la primera entrada para determinar cuántas filas procesar
  2. Analizar el número de condición de omisión de la segunda entrada
  3. Usar bucles anidados con un continue etiquetado para procesar los datos
  4. Para cada fila, verificar el valor de cada columna en esa fila
  5. Si encuentras el número de condición de omisión en cualquier columna de una fila, usa el continue etiquetado para omitir el resto del procesamiento de esa fila y pasar a la siguiente fila
  6. Para las filas que no contienen el número de condición de omisión, imprime "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. Para las filas que sí contienen el número de condición de omisión, imprime "Skipping row [row_number] due to condition"

Los números de fila deben reportarse utilizando una indexación basada en 0 (la primera fila es 0). Procesa solo el número de filas especificado en la primera entrada, y solo verifica las primeras 5 columnas de cada fila.

Hoja de referencia

Usa etiquetas con continue para omitir la iteración actual de un bucle específico en bucles anidados:

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")
}

Cuando se ejecuta continue outer, se omite el resto de la iteración actual del bucle externo y se salta directamente a la siguiente iteración del bucle etiquetado.

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)
    
    // Matriz de datos 2D proporcionada
    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 a continuación
    // Usa bucles anidados con continue etiquetado para procesar los datos
    // Verifica cada fila para el número de condición de salto
    // Imprime los mensajes apropiados según si se encuentra la condición
    
}
quiz iconPonte a prueba

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