Skip to content

Golangda map ma'lumot turi

Goda kalit-qiymatli 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.

mapham 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.

mapning uzunligi uning elementlari soni hisoblanadi, uzunligini len() funksiyasidan foydalanib aniqlash mumkin.

mapning dastlabki qiymati nilga teng.

mapni 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]

mapni e'lon qilish make() funksiyasi bilan

var a = make(map[KeyType]ValueType)
b := make(map[KeyType]ValueType)

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

var a map[KeyType]ValueType

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:

map[]
map[]
false
true

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. nilga teng bo'lgan map ga qiymat berib bo'lmaydi panic: assignment to entry in nil map xatoligi sodir bo'ladi.

map elementlariga murojaat qilish

qiymat = map_nomi[key]

Misol

package main
import ("fmt")

func main() {
  var a = make(map[string]string)
  a["ism"] = "Sardor"
  fmt.Println(a["ism"])
}

Natija:

Sardor

map elementini o'zgartirish

map_nomi[key] = yangi_qiymat

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:

Sardor
Elbek

mapdan element o'chirish

delete(map_name, key)

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

qiymat, element_bormi := map_nomi[key]

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:

Sardor true

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)
}

maplar 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:

map[ism:Sardor]
map[ism:Sardor]
=========
map[ism:Elbek]
map[ism:Elbek]

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:

ism Sardor
manzil Toshkent
tugilgan_yili 1999