Iterazione su un'intera mappa in Go
Le tabelle hash sono una delle strutture di dati più potenti e versatili nell’informatica. Esistono varietà di implementazioni di tabelle hash per diversi linguaggi di programmazione. In Go, le tabelle hash sono implementate come tipi di dati map
incorporati. In breve, una map
è una raccolta di coppie di valori-chiave
. Usiamo l’istruzione for...range
in Go to loop su tutte le chiavi
di una map
recuperando una chiave
alla volta.
Dichiarare e inizializzare le mappe
Una map
può essere dichiarata utilizzando la seguente sintassi:
var map_name map[KeyType]ValueType
Dove KeyType
è un qualsiasi ValueType
comparabile e ValueType
è anche un qualsiasi tipo di dati, inclusa la map
stessa.
package main
import "fmt"
func main() {
map_1 := map[int]string{
0: "Alok",
1: "Reman",
2: "Riken",
3: "Rudra",
}
fmt.Println(map_1)
}
Produzione:
map[0:Alok 1:Reman 2:Riken 3:Rudra]
Le Maps
possono anche essere create usando la funzione incorporata 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)
}
Produzione:
map[0:Alok 1:Reman 2:Riken 3:Rudra]
Ripeti su una mappa in Go
Possiamo iterare sull’intera map
usando le istruzioni for...range
. Tuttavia, l’ordine di iterazione su una map
non è fisso poiché la map
è una raccolta non ordinata.
Ripeti su tutte le chiavi e i valori di una 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)
}
}
Produzione:
Key:0 Value: Alok
Key:1 Value: Reman
Key:2 Value: Riken
Key:3 Value: Rudra
Tuttavia, se stai usando diversi tipi di dati per chiavi
o valori
della map
, devi specificare il formato per quel particolare tipo di dati durante la stampa di chiavi
o valori
. Di seguito è mostrato un esempio di una map
con il tipo di dati stringa
come chiavi
:
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)
}
}
Produzione:
Key:Giri Value: Alok
Key:Nembang Value: Reman
Key:Maharjan Value: Riken
Key:Jha Value: Rudra
Itera sulle chiavi solo 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)
}
}
Produzione:
Key:0
Key:1
Key:2
Key:3
Itera sui valori solo 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)
}
}
Produzione:
Value:Riken
Value:Rudra
Value:Alok
Value:Reman
L’ordine in cui le coppie chiave
e valore
nell’output sopra e l’ordine in cui le coppie valore-chiave
sono stampate sul tuo lato possono differire perché la map
è una raccolta non ordinata. Quindi, non devi preoccuparti di questo.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn