Aula 12 – Tutorial Golang – Range
Aula 12 – Tutorial Golang – Range
Página principal do blog
Todas as aulas desse curso
Aula 11 Aula 13
Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook
Esse é o link do código fluente no Pinterest
Meus links de afiliados:
Hostinger
Digital Ocean
One.com
Melhore seu NETWORKING
https://digitalinnovation.one/
Participe de comunidades de desenvolvedores:
Fiquem a vontade para me adicionar ao linkedin.
E também para me seguir no https://github.com/toticavalcanti.
Código final da aula:
https://github.com/toticavalcanti
Toti:
https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA
Backing track / Play-along:
https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA
Código Fluente
https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w
Putz!
https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw
Aula 12 – Tutorial Golang – Range
Range
Range (intervalo) itera sobre elementos em uma variedade de estruturas de dados.
Vamos ver como usar o range com algumas das estruturas de dados que já aprendemos.
Range em Array e Slice
Vamos começar usando Range para somar os números em um Slice.
Falamos de Slices na aula 10.
Slices são arrays dinâmicos que podem aumentar ou diminuir de tamanho conforme for necessário.
OBS. O código abaixo funciona tanto para slice como para array.
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)
Saída:
sum: 9
O compilador Go não permite que você crie variáveis que você nunca usa.
for i, value := range x {
total += value
}
O código acima retornará uma mensagem de erro “i declarado e não usado“.
Como não usamos i dentro de nosso loop, precisamos alterá-lo para:
for _, value := range x {
total += value
}
Nesse caso não dará erro, porque o i está sendo usado dentro do for, no println().
for i, num := range nums {
if num == 3 {
fmt.Println("index:", i)
}
}
Saída:
index: 1
O range em arrays e slices fornece o índice e o valor de cada entrada.
Então, quando não precisamos do índice, o ignoramos com o identificador em branco _.
Range em Maps
Range em Maps itera sobre pares de chave / valor.
kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
fmt.Printf("%s -> %s\n", k, v)
}
Saída:
a -> apple
b -> banana
Range também pode iterar apenas sobre as keys de um map.
for k := range kvs {
fmt.Println("key:", k)
}
Saída:
key: a
key: b
Range em Strings
Range em strings itera sobre pontos de código Unicode.
O primeiro valor é o índice de bytes inicial da runa e o segundo a própria runa.
Literais de runa são apenas valores inteiros de 32 bits, que representam pontos de código Unicode.
Por exemplo, o literal rúnico ‘a‘ é na verdade o número 97.
for i, c := range "go" {
fmt.Println(i, c)
}
Saída:
0 103
1 111
Código completo
package main
import "fmt"
func main() {
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)
for i, num := range nums {
if num == 3 {
fmt.Println("index:", i)
}
}
kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
fmt.Printf("%s -> %s\n", k, v)
}
for k := range kvs {
fmt.Println("key:", k)
}
for i, c := range "go" {
fmt.Println(i, c)
}
}
E pra executar é só entrar na pasta onde tá o arquivo range.go e digitar:
go run range.go