Menu
CoddyTech

Interrompendo Loops Aninhados

Parte da seção Lógica & Fluxo do Journey de GO da Coddy. Lição 2 de 68.

Ao trabalhar com loops aninhados, uma instrução break comum encerra apenas o loop mais interno. No entanto, Go oferece rótulos que permitem sair diretamente de loops externos, dando a você um controle preciso sobre estruturas de loop complexas.

Um rótulo é um identificador seguido de dois-pontos que você coloca antes de um laço. Você pode então usar break seguido do nome do rótulo para sair desse laço específico, mesmo de dentro de laços aninhados.

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

Neste exemplo, quando a condição i == 1 && j == 1 é atendida, break outer encerra imediatamente tanto o loop interno quanto o externo. Isso é particularmente útil ao pesquisar estruturas de dados 2D quando você quer parar completamente a busca assim que encontrar o que está procurando.

challenge icon

Desafio

Fácil

Neste desafio, você vai praticar o uso de instruções break rotuladas para sair de loops aninhados ao pesquisar em uma grade 2D. Você precisa encontrar um número-alvo específico na grade e interromper a busca imediatamente assim que encontrá-lo.

Você receberá duas entradas:

  • Uma string que representa as dimensões da grade no formato "rows,cols" (por exemplo, "3,4")
  • Uma string que representa o número-alvo a ser encontrado (por exemplo, "7")

Você receberá a seguinte grade 2D de números:

grid := [][]int{
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12},
}

Sua tarefa é:

  1. Usar os valores já lidos para você no código acima: rows e cols (a parte da grade a ser pesquisada), target e grid
  2. Usar loops aninhados com um break rotulado para pesquisar na grade
  3. Quando encontrar o número-alvo, imprimir "Found [target] at position ([row], [col])" e sair imediatamente dos dois loops usando o break rotulado
  4. Se concluir a busca sem encontrar o número-alvo, imprimir "Target [target] not found"

A posição deve ser informada usando indexação baseada em 0 (a primeira linha é 0, a primeira coluna é 0).

Experimente você mesmo

    // TODO: Escreva seu código abaixo
    // Use laços aninhados com break rotulado para procurar o alvo
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