Explorando a Palavra-Chave 'Range' do Go

Beginner

This tutorial is from open-source community. Access the source code

Introdução

A palavra-chave range é utilizada para iterar sobre elementos em uma variedade de estruturas de dados em Golang. Neste laboratório, exploraremos como usar range com diferentes estruturas de dados.

Range

O problema a ser resolvido neste laboratório é demonstrar como usar range com slices, arrays, maps e strings.

Para completar este laboratório, você precisará de:

  • Conhecimento básico da sintaxe Golang
  • Golang instalado em sua máquina
$ go run range.go
sum: 9
index: 1
a - > apple
b - > banana
key: a
key: b
0 103
1 111

Abaixo está o código completo:

// _range_ itera sobre elementos em uma variedade de estruturas de dados.
// Vamos ver como usar `range` com algumas das estruturas de dados que já aprendemos.

package main

import "fmt"

func main() {

	// Aqui usamos `range` para somar os números em um slice.
	// Arrays funcionam assim também.
	nums := []int{2, 3, 4}
	sum := 0
	for _, num := range nums {
		sum += num
	}
	fmt.Println("sum:", sum)

	// `range` em arrays e slices fornece tanto o
	// índice quanto o valor para cada entrada. Acima, não
	// precisávamos do índice, então o ignoramos com o
	// identificador em branco `_`. Às vezes, na verdade, queremos
	// os índices.
	for i, num := range nums {
		if num == 3 {
			fmt.Println("index:", i)
		}
	}

	// `range` em map itera sobre pares chave/valor.
	kvs := map[string]string{"a": "apple", "b": "banana"}
	for k, v := range kvs {
		fmt.Printf("%s -> %s\n", k, v)
	}

	// `range` também pode iterar apenas sobre as chaves de um map.
	for k := range kvs {
		fmt.Println("key:", k)
	}

	// `range` em strings itera sobre pontos de código Unicode.
	// O primeiro valor é o índice de byte inicial
	// do `rune` e o segundo o próprio `rune`.
	// Veja [Strings and Runes](strings-and-runes) para mais
	// detalhes.
	for i, c := range "go" {
		fmt.Println(i, c)
	}
}

Resumo

Neste laboratório, aprendemos como usar range com slices, arrays, maps e strings em Golang. A palavra-chave range fornece uma maneira conveniente de iterar sobre elementos em diferentes estruturas de dados.