Aula 12 - Tutorial Golang - Range
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:
Melhore seu NETWORKING
Participe de comunidades de desenvolvedores:
Fiquem a vontade para me adicionar ao linkedin.
Código final da aula:
Toti:
Backing track / Play-along:
Código Fluente
Putz!
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.
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
É isso pessoal, fico por aqui.
página do Código Fluente no
Facebook
Esse é o link do código fluente no Pinterest
Meus links de afiliados:
Obrigado e bons estudos. ;)