Aula 12 – Tutorial Golang – Range

Aula 12 – Tutorial Golang – Range

Tutorial Golang - Range

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

É isso pessoal, fico por aqui.

Nos vemos na próxima aula, até mais. 🙂

Página principal do blog

Todas as aulas desse curso

Aula 11                        Aula 13

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

Obrigado e bons estudos. 😉

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>