Golangda map
ma'lumot turi
Goda kalit-qiymat
li map
deb nomlangan yana bir muhim ma'lumot turi mavjud.
Kalit - bu qiymatni olish uchun foydalanadigan ob'ekt. Kalit va qiymat berilgan holda siz qiymatni
map
obyektida saqlashingiz mumkin. Qiymat saqlanganidan so'ng, uning kaliti yordamida uni olishingiz mumkin.
map
ham to'plam ma'lumot turi hisoblanadi, ya'ni bitta o'zgaruvchida bir qancha qiymatlarini saqlash mumkin.
map
tartiblanmagan va oʻzgaruvchan to'plam hisoblanadi, u dublikatlarga ruxsat bermaydi.
map
ning uzunligi uning elementlari soni hisoblanadi, uzunligini len()
funksiyasidan foydalanib aniqlash mumkin.
map
ning dastlabki qiymati nil
ga teng.
map
ni e'lon qilish var va := bilan
var va := bilan
var a = map[KeyType]ValueType{key1:value1, key2:value2,...}
b := map[KeyType]ValueType{key1:value1, key2:value2,...}
Misol
package main
import ("fmt")
func main() {
var a = map[string]string{"ism": "Sardor", "manzil": "Toshkent", "tugilgan_yili": "1999"}
b := map[string]string{"ism": "Sardor", "manzil": "Toshkent", "tugilgan_yili": "1999"}
fmt.Printf("a\t%v\n", a)
fmt.Printf("b\t%v\n", b)
}
Natija:
a map[ism:Sardor manzil:Toshkent tugilgan_yili:1999]
b map[ism:Sardor manzil:Toshkent tugilgan_yili:1999]
map
ni e'lon qilish make()
funksiyasi bilan
Misol:
package main
import ("fmt")
func main() {
var a = make(map[string]string)
a["ism"] = "Sardor"
a["manzil"] = "Toshkent"
a["tugilgan_yili"] = "1999"
b := make(map[string]string)
b["ism"] = "Sardor"
b["manzil"] = "Toshkent"
b["tugilgan_yili"] = "1999"
fmt.Printf("a\t%v\n", a)
fmt.Printf("b\t%v\n", b)
}
Natija:
a map[ism:Sardor manzil:Toshkent tugilgan_yili:1999]
b map[ism:Sardor manzil:Toshkent tugilgan_yili:1999]
bo'sh map
e'lon qilish
Info
make()
funksiyasi bo'sh map
e'lon qilish uchun to'g'ri yo'l hisoblanadi.
Misol:
package main
import ("fmt")
func main() {
var a = make(map[string]string)
var b map[string]string
fmt.Println(a)
fmt.Println(b)
fmt.Println(a == nil)
fmt.Println(b == nil)
}
Natija:
Info
make()
bilan map
e'lon qilinsa bo'sh map
hosil bo'ladi nil
bo'lmaydi, agar var b map[type]type
ko'rinishida
e'lon qilishda map
e'lon qilinadi lekin xotira ajratilmaydi nil
bo'ladi. nil
ga teng bo'lgan map
ga qiymat berib bo'lmaydi
panic: assignment to entry in nil map
xatoligi sodir bo'ladi.
map elementlariga murojaat qilish
Misol
package main
import ("fmt")
func main() {
var a = make(map[string]string)
a["ism"] = "Sardor"
fmt.Println(a["ism"])
}
Natija:
map elementini o'zgartirish
Misol:
package main
import ("fmt")
func main() {
var a = make(map[string]string)
a["ism"] = "Sardor"
fmt.Println(a["ism"])
a["ism"] = "Elbek"
fmt.Println(a["ism"])
}
Natija:
mapdan element o'chirish
Misol:
package main
import ("fmt")
func main() {
var a = make(map[string]string)
a["ism"] = "Sardor"
delete(a, "ism")
fmt.Println(a["ism"])
}
Natija:
Element mavjudligini tekshirish
Misol;
package main
import ("fmt")
func main() {
var a = make(map[string]string)
a["ism"] = "Sardor"
qiymat, element_bormi := a["ism"]
fmt.Println(qiymat, element_bormi)
}
Natija:
Agar qiymat kerak bo'lmasa, ammo key
mavjud yoki yo'q ekanini aniqlash kerak bo'lsa quyidagicha tekshirish mumkin.
package main
import ("fmt")
func main() {
var a = make(map[string]string)
a["ism"] = "Sardor"
_, element_bormi := a["ism"]
fmt.Println(qiymat, element_bormi)
}
map
lar xotira manzillari
map
xotirada o'zgaruvchilarni emas, xotirada joylashgan ma'lumotlarga manzillarni saqlaydi. Bu reference type
tushunchasining asosi hisoblanadi. Agar map
boshqa o‘zgaruvchiga o'tkazilsa, bu faqat havola (pointer) o'tadi.
package main
import ("fmt")
func main() {
var a = make(map[string]string)
a["ism"] = "Sardor"
b := a
fmt.Println(a)
fmt.Println(b)
b["ism"] = "Elbek"
fmt.Println("=========")
fmt.Println(a)
fmt.Println(b)
}
Natija:
b
va a
larda bir xil xotira maziliga bo'g'langan shu sabab birida ma'lumot o'zgarsa ikkinchisida ham o'zgaradi.
map va takrorlash operatori
map
ustida takrorlash operatorini range
bilan ishlatishingiz mumkin.
Misol
package main
import ("fmt")
func main() {
var a = map[string]string{"ism": "Sardor", "manzil": "Toshkent", "tugilgan_yili": "1999"}
for key, value := range a {
fmt.Println(key, value)
}
}
Natija: