Sobes.tech
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.