Sobes.tech
Middle

Nil interfeysi nima?

sobes.tech AI

AIdan javob

Go tilida, nil interfeys - bu hech qanday aniq tur va qiymatga ega bo'lmagan interfeys qiymatidir. Go'da interfeys ikki qismdan iborat: tur va qiymat. Agar ikkala qism ham nil bo'lsa, interfeys nil hisoblanadi.

Muhim bo'lib, interfeys ma'lum bir turga oid nil ko'rsatkichni o'z ichiga olishi mumkin, lekin o'zi nil bo'lmaydi, chunki tur belgilangan.

Misol:

var i interface{} // i == nil

var p *int = nil
var i2 interface{} = p // i2 != nil, chunki *int turi belgilangan, garchi qiymat nil bo'lsa ham

fmt.Println(i == nil)  // true
fmt.Println(i2 == nil) // false

Bu ko'pincha xatolarga olib keladi, chunki interfeysni nil deb tekshirishda, u nil ko'rsatkichni o'z ichiga olgan bo'lsa, shart bajarilmaydi.

Shuning uchun, interfeyslar bilan ishlaganda, nil interfeys - bu tur va qiymat bilan bir vaqtda bo'lmagan interfeys ekanligini hisobga olish muhimdir.