Mapa është koleksion i vlerave çift indeks-vlerë. Në gjuhët tjera iu referohemi si varg asociativ (associative array), hash table apo dictionary. Vlerat në një mapë kërkohen sipas çelësit/indeksit.
Mapa e zbrazët krijohet me sintaksën:
make(map[key-type]val-type)
Për shembull, për indeks të tipit int dhe vlera të tipit string, shkruajmë:
make(map[int]string)
Si indeks mund të përdoren tipet: int, float, numër kompleks, string, pointer, ose interfejs.
Mund të krijohen edhe mapa që përmbajnë mapa të tjera, p.sh.:
map[string]map[string]string
package main
import "fmt"
func main() {
m := make(map[string]float32)
m["jan"] = 430.75
m["feb"] = 230.45
m["mar"] = 130.25
fmt.Println("map:", m)
}
https://play.golang.org/p/Mqk5n33s8JX
Rezultati:
map: map[feb:230.45 jan:430.75 mar:130.25]
Paraqitja e vlerave me një for loop:
package main
import "fmt"
func main() {
m := make(map[string]float32)
m["jan"] = 430.75
m["feb"] = 230.45
m["mar"] = 130.25
for i, v := range m {
fmt.Println(i, v)
}
}
https://play.golang.org/p/t2Q0z-4kqOe
Rezultati:
jan 430.75
feb 230.45
mar 130.25
Numri i elementeve të mapës, përdoret funksioni len()
:
package main
import "fmt"
func main() {
m := make(map[string]float32)
m["jan"] = 430.75
m["feb"] = 230.45
m["mar"] = 130.25
fmt.Println("len:", len(m))
}
https://play.golang.org/p/sYZNn4OJfEf
Rezultati:
Numri i elementeve: 3
Fshirja e një anëtari të mapës. Përdoret funksioni delete()
:
package main
import "fmt"
func main() {
m := make(map[string]float32)
m["jan"] = 430.75
m["feb"] = 230.45
m["mar"] = 130.25
delete(m, "feb")
for i, v := range m {
fmt.Println(i, v)
}
}
https://play.golang.org/p/syj0PtA5DbH
Rezultati:
mar 130.25
jan 430.75
Kur kërkojmë një anëtar të mapës me indeks që nuk ekziston, vlera e kthyer është zero, kështu që mund të jemi në konfuzion: a është vlera e anëtarit zero, apo nuk u gjet anëtari me atë indeks. Në situata të këtilla, i përdorim dy variabla, ku variabla e dytë do të ketë vlerë të tipit boolean (true ose false).
Nëse është true
, anëtari me atë indeks ekziston, dhe nëse kthen false
– anëtari me atë indeks nuk ekziston.
Nëse na nevojitet vetëm verifikimi i ekzistencës së një anëtari me indeks të caktuar, atëherë si variabël të parë e përdorim shenjën _.
package main
import "fmt"
func main() {
m := make(map[string]float32)
m["jan"] = 430.75
m["feb"] = 230.45
m["mar"] = 130.25
v, ok := m["feb"]
fmt.Println("Vlera e anëtarit m[\"feb\"]", v)
if ok {
fmt.Println("Anëtari me indeksin 'feb' ekziston")
} else {
fmt.Println("Anëtari me indeksin 'feb' nuk ekziston")
}
// Leximi i vlerës dhe verifikimi i ekzistencës së anëtarit
v, ok = m["apr"]
fmt.Println("Vlera e anëtarit m[\"apr\"]", v)
if ok {
fmt.Println("Anëtari me indeksin 'apr' ekziston")
} else {
fmt.Println("Anëtari me indeksin 'apr' nuk ekziston")
}
// Verifikimi i ekzistncës së anëtarit
_, ok = m["may"]
if ok {
fmt.Println("Anëtari me indeksin 'may' ekziston")
} else {
fmt.Println("Anëtari me indeksin 'may' nuk ekziston")
}
}
https://play.golang.org/p/__jke7ynjYE
Rezultati:
Vlera e anëtarit m["feb"] 230.45
Anëtari me indeksin 'feb' ekziston
Vlera e anëtarit m["apr"] 0
Anëtari me indeksin 'apr' nuk ekziston
Anëtari me indeksin 'may' nuk ekziston
Deklarimi dhe inicializimi i mapës:
package main
import "fmt"
func main() {
m := map[string]float32{"jan": 430.75, "feb": 230.45, "mar": 130.25}
fmt.Println(m)
}
https://play.golang.org/p/BKwfqr7omWk
Rezultati:
map[feb:230.45 jan:430.75 mar:130.25]