Desbravando o Go: Estruturas de repetição (parte 4)
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ó ;)