Sobes.tech
Middle

Nil interfeysi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, nil interfeys, heç bir konkret tiplə və ya dəyərlə təmin edilməyən interfeys dəyəridir. Go-da interfeys iki hissədən ibarətdir: tip və dəyər. Hər iki hissə nil olarsa, interfeys nil hesab olunur.

Əhəmiyyətlidir ki, interfeys müəyyən bir tiplə nil göstərici içərə bilər, amma interfeys özü nil olmayacaq, çünki tiplər müəyyən edilmişdir.

Misal:

var i interface{} // i == nil

var p *int = nil
var i2 interface{} = p // i2 != nil, çünki *int tipi müəyyən edilmişdir, baxmayaraq ki, dəyər nil-dir

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

Bu, çox vaxt səhvlərə səbəb olur, çünki interfeysi nil kimi yoxlamaq istədikdə, o nil göstərici ehtiva edir və şərt yerinə yetmir.

Bu səbəbdən, interfeyslərlə işləyərkən, nil interfeys, həm tip, həm də dəyər olmadan olan interfeys olduğunu nəzərə almaq vacibdir.