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əxdəyişəni, standart olaraqnil-ə 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ənx = 5, ondaxartıqnildeyil, çünkiintnövü və5də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.