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