Junior — Middle
Go tilida bo'sh interfeys ifodasi va nil qiymati qanday farq qiladi?
sobes.tech AI
AIdan javob
Go tilida, bo'sh interfeys (interface{}) — bu har qanday turdagi qiymatni o'z ichiga olishi mumkin bo'lgan tur, bunda nil ham kiradi. Biroq, bo'sh interfeys ifodasi va nil qiymati ikki xil narsa.
var x interface{}— bo'sh interfeys turidagi o'zgaruvchix, standart holatdanilga teng, ya'ni hech qanday tur va qiymatga ega emas.- Agar
xga biron bir qiymat tayinlasagina, masalan,x = 5, undaxendinilemas, chunki uintturida va qiymati5.
Farq shundaki, Go'da interfeys ichki jihatdan ikki ko'rsatkich bilan ifodalanadi: biri turga, biri qiymatga. Interfeys faqat ikkala ko'rsatkich ham nil bo'lsa, nil hisoblanadi.
Misol:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, chunki `*int` turi mavjud, garchi qiymati `nil` bo'lsa ham
fmt.Println(i == nil) // false
Shunday qilib, bo'sh interfeys ma'lum bir turdagi nil qiymatini o'z ichiga olishi mumkin, lekin o'zi nil emas. Bu Go'da nil tekshiruvlarida muhim nuqta.