Menu
Coddy logo textTech

Continuando um Loop Específico

Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 3 de 68.

Assim como você pode usar rótulos com break para sair de loops específicos, o Go também permite que você use rótulos com a instrução continue. Um continue rotulado pula a iteração atual do loop especificado e pula para a sua próxima iteração.

Isso é particularmente útil em loops aninhados quando você deseja pular o restante da iteração atual de um loop externo a partir de um loop interno, em vez de apenas continuar o loop 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")
}

Neste exemplo, quando i == 1 && j == 0, a instrução continue outer pula o restante da iteração atual do loop externo, incluindo o loop interno e a mensagem "End of outer loop iteration". O programa então move-se diretamente para a próxima iteração do loop externo onde i se torna 2.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

challenge icon

Desafio

Fácil

Neste desafio, você praticará o uso de instruções continue rotuladas para controlar a execução de loops aninhados. Você está construindo um sistema de processamento de dados que precisa pular certas iterações do loop externo com base em condições encontradas nos loops internos.

Você receberá duas entradas:

  • Uma string representando o número de linhas a serem processadas (ex: "4")
  • Uma string representando um número de condição de pulo (ex: "3")

Você recebeu o seguinte array de dados 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}
}

Sua tarefa é:

  1. Analisar o número de linhas da primeira entrada para determinar quantas linhas processar
  2. Analisar o número da condição de pulo da segunda entrada
  3. Usar loops aninhados com um continue rotulado para processar os dados
  4. Para cada linha, verifique o valor de cada coluna naquela linha
  5. Se você encontrar o número da condição de pulo em qualquer coluna de uma linha, use o continue rotulado para pular o restante do processamento dessa linha e passar para a próxima linha
  6. Para linhas que não contêm o número da condição de pulo, imprima "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. Para linhas que contêm o número da condição de pulo, imprima "Skipping row [row_number] due to condition"

Os números das linhas devem ser relatados usando indexação baseada em 0 (a primeira linha é 0). Processe apenas o número de linhas especificado na primeira entrada e verifique apenas as primeiras 5 colunas de cada linha.

Folha de consulta

Use rótulos com continue para pular a iteração atual de um loop específico em loops aninhados:

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

Quando continue outer é executado, ele pula o restante da iteração atual do loop externo e salta diretamente para a próxima iteração do loop rotulado.

Experimente você mesmo

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Ler a entrada
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // Analisar as entradas
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // Array de dados 2D fornecido
    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: Escreva seu código abaixo
    // Use loops aninhados com continue rotulado para processar os dados
    // Verifique cada linha para o número da condição de pulo
    // Imprima mensagens apropriadas com base no fato de a condição ser encontrada ou não
    
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo