Sobes.tech
Junior — Middle

Sıfır dəyərə malik xəritə ilə sıfır dəyərə malik dilim arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, sıfır dəyərə malik xəritə (map) başlanmamış və nil-ə bərabər olan xəritədir. Belə bir xəritəyə yazmağa cəhd panikə səbəb olacaq.

Sıfır dəyərə malik dilim (slice) nil-dilimdir, yəni massivə işarə etmir və uzunluğu və tutumu 0-dır. Onu təhlükəsiz istifadə etmək mümkündür, məsələn, oxumaq və ya funksiyalara ötürmək üçün.

Əsas fərqlər:

  • map == nil xəritənin başlanmamış olduğunu və elementləri qəbul edə bilmədiyini göstərir.
  • slice == nil dilimin boş olduğunu və massivə işarə etmədiyini, lakin oxumaq və ötürmək üçün istifadə oluna biləcəyini göstərir.

Nümunə:

var m map[string]int // m == nil
// m["key"] = 1 // panik: nil xəritəyə təyin etmə

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // indi dilim başlanıb

Beləliklə, nil-xəritə yazmaq üçün uyğun deyil, və nil-dilim oxuma və genişləndirmə üçün təhlükəsizdir.