Desbravando o Go: Estruturas de repetição (parte 4)

Rafael Tardivo
rafaeltardivo
Published in
2 min readFeb 14, 2019

Ou melhor, estrutura (singular) de repetição!

Em Go, nós só temos uma estrutura de repetição: o for! Mas não se preocupe, o for é flexível o suficiente para ser usado em qualquer situação que antes pedia um while ou muito raramente um do-while.

Sem mais delongas, vamos ver como ele funciona:

For tradicional

for initialization; condition; post {
// zero or more statements
}

O for tradicional que conta com inicialização, condição e execução pós-iteração:

for i:=0; i < 10; i++{
fmt.Println(i)
}

No entanto, as etapas de inicialização e execução pós-iteração podem ser omitidas! E isso nos leva ao próximo exemplo.

While

for condition {
// ...
}

Observe que só existe uma condição (comportamento do laço while em outras linguagens):

for len(name) < 5 {
fmt.Println("Insira seu nome (min 5 chars): ")
name, _ = reader.ReadString('\n')
}

Ou seja, enquanto o tamanho do nome for menor que 5 caracteres, o laço continuará (sem necessidade de inicialização ou execução pós-iteração).

While (infinito)

for {
// ...
}

Sem condição ou inicialização, o laço acima só seria parado por um break, por exemplo.

Foreach

vogals := []string{"A", "E", "I", "O", "U"}for index, value := range vogals {
fmt.Printf("%d - %v\n", index, value)
}

IMHO, o mais bonito de todos! Iterar de maneira intuitiva em coleções facilita (e muito) nossa vida! Observe que iteramos sobre índice e valor do range vogals:

for index, value := range vogals

Mas também seria possível aproveitar só o valor:

for _ , value := range vogals

Ou mesmo só o índice:

for index := range vogals

Do While

Por último, o menos frequente do while, muitas vezes nem incluso em liguagens modernas é possível de ser simulado da seguinte maneira:

for ok := true; ok; ok = condition {
// ...
}

Por hoje é só ;)

--

--