Junior — Middle
Go программалоо тилинде бош бош интерфейс менен nil мааниси бар интерфейсинин айырмасы эмнеде?
sobes.tech AI
AIден жооп
Go тилинде, бош интерфейс interface{} — бул методторду камтыбаган жана ар кандай түрдөгү маанини сактай алган интерфейс. Бирок, эгер интерфейс түрүндөгү өзгөрмө nil болсо, анда nil эмне экенин так түшүнүү маанилүү.
- Бош интерфейс, мааниси жок: мааниге ээ эмес интерфейс түрүндөгү өзгөрмө nil деп эсептелет.
- Nil мааниге ээ интерфейс: эгер интерфейс конкреттүү бир түрдү камтыса, бирок ошол түрдүн мааниси nil болсо, анда интерфейс өзү nilге барабар эмес, анткени ал түр тууралуу маалымат сактайт.
Мисал:
var i interface{} // i == nil
var p *int = nil // p == nil
i = p // i != nil, анткени ал *int түрүн камтыйт, бирок мааниси nil
fmt.Println(i == nil) // false
fmt.Println(p == nil) // true
Nil текшерүүдө булду эске алуу маанилүү, күтүлбөгөн каталардан сактануу үчүн.