Junior — Middle
Go dasturlash tilida bo'sh interfeys va nil qiymatli interfeys o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Go tilida, bo'sh interfeys interface{} — bu metodalarni o'z ichiga olmaydigan va har qanday turdagi qiymatni saqlay oladigan interfeys. Biroq, interfeys turidagi o'zgaruvchi nil bo'lsa, nil nima ekanligini tushunish muhim.
- Bo'sh interfeys, qiymat bo'lmagan: qiymatga ishora qilmaydigan interfeys turidagi o'zgaruvchi nil hisoblanadi.
- Nil qiymatga ega interfeys: agar interfeys ma'lum bir turni o'z ichiga olsa, lekin bu turning qiymati nil bo'lsa, interfeys o'zi nilga teng emas, chunki u tur haqida ma'lumot saqlaydi.
Misol:
var i interface{} // i == nil
var p *int = nil // p == nil
i = p // i != nil, chunki u *int turini o'z ichiga oladi, lekin qiymati nil
fmt.Println(i == nil) // false
fmt.Println(p == nil) // true
Nil tekshiruvi qilishda buni hisobga olish, kutilmagan xatoliklarni oldini olish uchun muhimdir.