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, Go também permite usar rótulos com a instrução continue. Um continue rotulado ignora a iteração atual do loop especificado e passa para a próxima iteração.

Isso é particularmente útil em loops aninhados quando você quer 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 ignora o restante da iteração atual do loop externo, incluindo o loop interno e a mensagem "End of outer loop iteration". Em seguida, o programa passa diretamente para a próxima iteração do loop externo, na qual i se torna 2.

challenge icon

Desafio

Fácil

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

Você receberá duas entradas:

  • Uma string que representa o número de linhas a processar (por exemplo, "4")
  • Uma string que representa o número da condition de ignorar (por exemplo, "3")

O seguinte 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}
}

Sua tarefa é:

  1. Interpretar o número de linhas da primeira entrada para determinar quantas linhas processar
  2. Interpretar o número da condition de ignorar da segunda entrada
  3. Usar loops nested com um continue rotulado para processar os dados
  4. Para cada linha, verificar cada valor de coluna nessa linha
  5. Se você encontrar o número da condition de ignorar em qualquer coluna de uma linha, use continue rotulado para ignorar 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 condition de ignorar, imprimir "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. Para linhas que contêm o número da condition de ignorar, imprimir "Skipping row [row_number] due to condition"

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

Experimente você mesmo

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Ler entrada
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // Analisar 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 em busca do número da condição de pulo
    // Imprima mensagens apropriadas com base em se a condição foi encontrada
    
}
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

Pratique por conta própria: Compilador de Go online