Afișare
Afișarea sau map reprezintă o referință la o tabelă de dispersie - o structură de date în care fiecare element reprezintă o pereche „cheie-valoare”. Fiecare element are o cheie unică, care permite obținerea valorii asociate. Afișarea este definită ca un obiect de tipul map[K]V, unde K reprezintă tipul cheii, iar V reprezintă tipul valorii. De asemenea, tipul cheii K trebuie să susțină operația de comparare „==”, pentru ca afișarea să poată asocia valoarea cu una dintre chei din tabela de dispersie.
De exemplu, definirea unei afișări care are tipul „string” pentru chei și tipul „int” pentru valori:
var people map[string]int // Cheile sunt de tipul string, valorile sunt de tipul int
Setarea valorilor în afișare:
var people = map[string]int{
"Tom": 1,
"Bob": 2,
"Sam": 4,
"Alice": 8,
}
fmt.Println(people) // map[Tom:1 Bob:2 Sam:4 Alice:8]
La fel ca în cazul unui array sau slice, elementele sunt plasate între paranteze acolade. Fiecare element reprezintă o pereche cheie-valoare. Mai întâi se pune cheia, urmată de valoare, separată prin două puncte. Definirea unui element se încheie cu o virgulă.
Accesul la elemente folosind cheile:
var people = map[string]int{
"Tom": 1,
"Bob": 2,
"Sam": 4,
"Alice": 8,
}
fmt.Println(people["Alice"]) // 8
fmt.Println(people["Bob"]) // 2
people["Bob"] = 32
fmt.Println(people["Bob"]) // 32
Verificarea existenței unui element pentru o cheie specifică se poate face cu o expresie if:
var people = map[string]int{
"Tom": 1,
"Bob": 2,
"Sam": 4,
"Alice": 8,
}
if val, ok := people["Tom"]; ok{
fmt.Println(val)
}
Dacă valoarea pentru cheia dată există în afișare, atunci variabila ok va fi true, iar variabila val va conține valoarea obținută. Dacă variabila ok este false, înseamnă că nu există nici o valoare asociată cu cheia respectivă în afișare.
Parcurgerea elementelor se face cu ajutorul unui ciclu for:
var people = map[string]int{
"Tom": 1,
"Bob": 2,
"Sam": 4,
"Alice": 8,
}
for key, value := range people{
fmt.Println(key, value)
}
Ieșirea în consolă a programului va fi:
Tom 1
Bob 2
Sam 4
Alice 8
Funcția make reprezintă o alternativă pentru crearea unei afișări. Aceasta creează o tabelă de dispersie goală:
people := make(map[string]int)
Adăugarea și eliminarea elementelor
Pentru a adăuga un element, este suficient să asignăm o valoare pentru o cheie nouă și elementul cu acea cheie va fi adăugat în colecție:
var people = map[string]int{ "Tom": 1, "Bob": 2}
people["Kate"] = 128
fmt.Println(people) // map[Tom:1 Bob:2 Kate:128]
Pentru a elimina un element, se folosește funcția încorporată delete(map, key), unde primul parametru este afișarea, iar al doilea parametru este cheia pentru care trebuie eliminat elementul:
var people = map[string]int{ "Tom": 1, "Bob": 2, "Sam": 8}
delete(people, "Bob")
fmt.Println(people) // map[Tom:1 Sam:8]