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.