Sobes.tech
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 текшерүүдө булду эске алуу маанилүү, күтүлбөгөн каталардан сактануу үчүн.