Como Iterar Sobre um Mapa Inteiro em Go
As tabelas de hash são uma das estruturas de dados mais poderosas e versáteis da Ciência da Computação. Há variedades de implementações de tabelas de hash para diferentes linguagens de programação. Em Go, as tabelas de hash são implementadas como tipos de dados map
embutidos. Em resumo, um map
é uma coleção de pares de valores-chave
. Utilizamos a declaração para...alcance
em Go para fazer um loop sobre toda a chave
de um map
, recuperando uma chave
de cada vez.
Declare e inicialize os mapas
Um map
pode ser declarado utilizando a seguinte sintaxe:
var map_name map[KeyType]ValueType
Onde KeyType
é qualquer tipo de dado comparável e ValueType
é também qualquer tipo de dado incluindo o próprio map
.
package main
import "fmt"
func main() {
map_1 := map[int]string{
0: "Alok",
1: "Reman",
2: "Riken",
3: "Rudra",
}
fmt.Println(map_1)
}
Resultado:
map[0:Alok 1:Reman 2:Riken 3:Rudra]
Os Maps
também podem ser criados utilizando a função inbuilt make()
.
package main
import "fmt"
func main() {
var map_2 = make(map[int]string)
map_2[0] = "Alok"
map_2[1] = "Reman"
map_2[2] = "Riken"
map_2[3] = "Rudra"
fmt.Println(map_2)
}
Resultado:
map[0:Alok 1:Reman 2:Riken 3:Rudra]
Iterate Over a Map in Go
Podemos iterar ao longo de todo o map
utilizando declarações para...alcance
. Entretanto, a ordem de iteração sobre um map
não é fixa, pois o map
é uma coleção não ordenada.
Iterate Over All Keys and Values of a map
in Go
package main
import "fmt"
func main() {
map_1 := map[int]string{
0: "Alok",
1: "Reman",
2: "Riken",
3: "Rudra",
}
for k, v := range map_1 {
fmt.Printf("Key:%v Value: %s\n", k, v)
}
}
Resultado:
Key:0 Value: Alok
Key:1 Value: Reman
Key:2 Value: Riken
Key:3 Value: Rudra
Entretanto, se você estiver utilizando diferentes tipos de dados para chaves
ou valores
do map
, então você deve especificar o formato para esse tipo específico de dados enquanto imprime chaves
ou valores
. Um exemplo de um map
com string
do tipo de dados como chaves
é mostrado abaixo:
package main
import "fmt"
func main() {
map_1 := map[string]string{
"Giri ": "Alok",
"Nembang ": "Reman",
"Maharjan": "Riken",
"Jha ": "Rudra",
}
for k, v := range map_1 {
fmt.Printf("Key:%v Value: %s\n", k, v)
}
}
Resultado:
Key:Giri Value: Alok
Key:Nembang Value: Reman
Key:Maharjan Value: Riken
Key:Jha Value: Rudra
Iterate Over Keys Only in Go map
(Iterate Over Keys Only in Go map
)
package main
import "fmt"
func main() {
map_1 := map[int]string{
0: "Alok",
1: "Reman",
2: "Riken",
3: "Rudra",
}
for k := range map_1 {
fmt.Printf("Key:%v\n", k)
}
}
Resultado:
Key:0
Key:1
Key:2
Key:3
Iterate Over Values Only in Go map
(Iterate Over Values Only in Go map
)
package main
import "fmt"
func main() {
map_1 := map[int]string{
0: "Alok",
1: "Reman",
2: "Riken",
3: "Rudra",
}
for _, v := range map_1 {
fmt.Printf("Value:%s\n", v)
}
}
Resultado:
Value:Riken
Value:Rudra
Value:Alok
Value:Reman
A ordem em que os pares chave
e valor
na saída acima e a ordem em que os pares valor chave
são impressos no seu lado podem diferir porque o map
é uma coleção não ordenada. Portanto, você não precisa se preocupar com isso.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn