Iterazione su un'intera mappa in Go

Suraj Joshi 6 aprile 2021
  1. Dichiarare e inizializzare le mappe
  2. Ripeti su una mappa in Go
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.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Articolo correlato - Go Map