Sobes.tech
Middle

Nil интерфейси деген эмне?

sobes.tech AI

AIден жооп

Go тилинде, nil интерфейс — бул эч кандай конкреттүү түрү жана мааниси жок интерфейс мааниси. Goда интерфейс эки бөлүктөн турат: түрү жана мааниси. Эгер эки бөлүк тең nil болсо, интерфейс nil деп эсептелет.

Маанилүү, интерфейс конкреттүү түргө тиешелүү nil көрсөткүчтү камтышы мүмкүн, бирок өзү nil болбойт, себеби түр белгиленген.

Мисал:

var i interface{} // i == nil

var p *int = nil
var i2 interface{} = p // i2 != nil, себеби *int түрү белгиленген, бирок мааниси nil

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

Бул көбүнчө каталарга алып келет, анткени интерфейсти nil деп текшерүүдө, ал nil көрсөткүчтү камтышы мүмкүн, жана шарт ишке ашпайт.

Ошондуктан, интерфейстер менен иштөөдө, nil интерфейс — бул түрү жана мааниси бирдей эмес интерфейс экенин эске алуу маанилүү.