Sobes.tech
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'zgaruvchi x, standart holatda nil ga teng, ya'ni hech qanday tur va qiymatga ega emas.
  • Agar x ga biron bir qiymat tayinlasagina, masalan, x = 5, unda x endi nil emas, chunki u int turida va qiymati 5.

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.