Sobes.tech
Junior — Middle

Go dilində boş interfeys ifadəsi ilə nil dəyəri arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, boş interfeys (interface{}) hər hansı bir növün dəyərini saxlaya bilən bir növdür, o cümlədən nil. Ancaq, boş interfeys ifadəsi və nil dəyəri iki fərqli şeydir.

  • var x interface{} — boş interfeys növündə x dəyişəni, standart olaraq nil-ə bərabərdir, yəni heç bir növ və dəyər içermir.
  • Əgər x-ə hər hansı bir dəyər təyin etsəniz, məsələn x = 5, onda x artıq nil deyil, çünki int növü və 5 dəyərini saxlayır.

Fərq odur ki, Go-da interfeys daxili olaraq iki göstərici ilə təmsil olunur: biri növə, digəri isə dəyərə. Interfeys yalnız hər iki göstərici nil olduqda nil sayılır.

Nümunə:

var i interface{} // i == nil
var p *int = nil

 i = p // i != nil, çünki `*int` növü mövcuddur, baxmayaraq ki, dəyər `nil`

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

Beləliklə, boş interfeys müəyyən bir növün nil dəyərini saxlaya bilər, amma interfeys özü nil deyil. Bu, Go-da nil yoxlamalarında vacib bir nöqtədir.