Como usar loops em Go: exemplos práticos e dicas
Fala dev! Se você está começando sua jornada em programação, saiba que os loops são fundamentais para quem quer dominar qualquer linguagem, inclusive o Go. A boa notícia é que Go é uma linguagem simples e eficiente quando o assunto é loops.
Loops permitem que você execute um bloco de código várias vezes, economizando tempo e esforço. Vamos juntos descobrir como o Go lida com loops de forma prática e objetiva! Let’s Go?
Estrutura básica do loop for
em Go
Diferentemente de outras linguagens que possuem várias opções de loop (
for
, while
, do-while
), no Go temos apenas uma: o for
. E é impressionante o que dá para fazer com ela! O loop
for
em Go segue esta estrutura:for inicialização; condição; pós-execução { // código a ser executado em cada iteração }
Exemplo prático:
Vamos criar um loop que imprime os números de 0 a 8:
package main import "fmt" func main() { for i := 0; i < 9; i++ { fmt.Println("Valor de i:", i) } }
A função
fmt.Println()
é usada para imprimir uma linha de texto no console. No exemplo acima, ela imprime o valor de i
em cada iteração do loop. O fmt
é um pacote da biblioteca padrão do Go, que contém funções de formatação de entrada e saída, sendo Println
uma das mais utilizadas para exibir resultados na tela.Ao rodar este código, o programa executa a instrução
fmt.Println("Valor de i:", i)
nove vezes, variando i
de 0 a 8.Você pode experimentar o código direto no OneCompiler, uma ferramenta online que permite rodar código Go sem instalar nada no seu computador. 👉 Bora codar?
Simulando um while
com for
no Go
Sabia que podemos usar o
for
de Go como se fosse um while
? Basta omitir a parte de inicialização e pós-execução:package main import "fmt" func main() { contador := 0 for contador < 19 { fmt.Println("Contagem:", contador) contador++ } }
Este código irá imprimir a contagem de 0 a 18. Quer ver esse exemplo rodando? 👉 Clique aqui e bora codar!
Loops infinitos
Imagine que você quer criar um servidor que nunca pare de rodar. Podemos fazer isso com um loop infinito! No Go, basta escrever o
for
sem nada:package main import "fmt" func main() { for { fmt.Println("Loop infinito!") } }
💡Esse tipo de loop é muito utilizado em servidores que precisam ficar rodando indefinidamente até serem interrompidos.
Para evitar travar o navegador com loops infinitos (ou até chegar no limite pré-estabelecido do compilador online), podemos adicionar uma condição de parada usando o
break
. Isso permitirá que o loop saia quando atingirmos uma determinada condição. Vamos ver como podemos ajustar o exemplo:package main import "fmt" func main() { count := 0 for { fmt.Println("Loop infinito!") count++ if count >= 15 { // Quando count atingir 15, o loop é interrompido fmt.Println("O loop foi interrompido.") break } } }
Neste exemplo, o loop imprime "Loop infinito!" quinze vezes e depois interrompe a execução. Isso é uma maneira eficiente de garantir que o loop não continue para sempre. Bora testar, dev? 👈
Usando for
com range
O
range
em Go é perfeito para trabalhar com coleções, como slices, arrays, strings e maps. Vamos ver um exemplo iterando sobre um slice de tecnologias:package main import "fmt" func main() { tecnologias := []string{"Go", "Node.js", "React", "Python"} for indice, tecnologia := range tecnologias { fmt.Printf("Índice: %d, Tecnologia: %s\n", indice, tecnologia) } }
👉 Clique aqui e veja como o range facilita a vida ao lidar com coleções em Go!
Controle de fluxo em loops
Os loops em Go permitem controlar o fluxo usando as instruções
break
e continue
. Como vimos anteriormente, o
break
é utilizado para sair do loop imediatamente ao atingir uma determinada condição, ignorando as iterações restantes. Mas, e se a gente quiser apenas pular para a próxima iteração sem sair do loop? Aí entra o continue
.O comando continue
O
continue
faz com que o loop pule diretamente para a próxima iteração, ignorando o código que vem após a instrução continue
no ciclo atual.Veja o exemplo abaixo:
package main import "fmt" func main() { for i := 0; i < 5; i++ { if i == 3 { fmt.Println("Pulando a iteração:", i) continue } fmt.Println(i) } }
Nesse exemplo, quando
i
é igual a 3, a instrução continue
faz com que o loop pule para a próxima iteração, ignorando o fmt.Println(i)
daquela rodada.Experimente esse exemplo e veja como o continue afeta o fluxo do loop, clique aqui. 👈
Loops aninhados
Imagine que você é um desenvolvedor aqui na Rocketseat e precisa organizar os cursos e seus módulos para apresentar na nossa próxima reunião. Cada curso tem vários módulos e queremos exibir essa estrutura de forma clara para todos. Para isso, vamos usar loops aninhados!
Confira o exemplo abaixo:
package main import "fmt" func main() { cursos := [][]string{ {"Ignite Go", "Fundamentos de Go", "Construindo APIs"}, {"Ignite React", "Fundamentos do React", "Hooks e Context API"}, } for i, curso := range cursos { fmt.Printf("Curso %d: %s\n", i+1, curso[0]) for j, modulo := range curso[1:] { fmt.Printf(" Módulo %d: %s\n", j+1, modulo) } } }
Nesse exemplo, estamos percorrendo uma lista de cursos da Rocketseat e exibindo seus módulos de forma organizada. Repare que o primeiro loop percorre os cursos e o segundo loop percorre os módulos de cada curso, tornando a visualização dos dados muito mais clara. Assim, você consegue facilmente visualizar cada curso e os módulos que ele contém, exatamente como faria em um projeto real.
Explorando mais sobre Go
Agora que você já aprendeu sobre loops em Go, que tal continuar sua jornada de aprendizado com mais artigos e conteúdos exclusivos? Confira alguns posts do nosso blog que vão te ajudar a se aprofundar na linguagem:
E se você quer ir ainda mais longe, confira a documentação oficial de Go. Lá você encontrará informações detalhadas sobre a linguagem, suas funcionalidades e melhores práticas!
A jornada Go da Rocketseat
Agora que você já sabe o básico sobre loops em Go, que tal se aprofundar ainda mais e dominar essa linguagem incrível? Na Rocketseat, temos a formação em Go que oferece:
- Aprendizado hands-on: você aprende codando, com projetos práticos e desafios reais.
- Portfólio impressionante: construa projetos que realmente fazem a diferença e impressionam recrutadores.
- Experiência com problemas reais de mercado: ganhe experiência prática com situações que você encontrará na vida real como desenvolvedor.
- Certificação reconhecida: ao finalizar, você terá uma certificação que destaca suas habilidades para recrutadores e empresas.
Na nossa formação, você vai desde os conceitos mais básicos até a construção de APIs REST e projetos complexos.
Não perca tempo, venha dominar Go com a Rocketseat e acelere sua carreira!