Sobes.tech
Junior — Middle

რა განსხვავებაა ცარიელ ინტერფეისსა და nil მნიშვნელობის ინტერფეისს შორის Go პროგრამირების ენაში?

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-ის შემოწმებისას, რათა თავიდან აიცილოთ მოულოდნელი შეცდომები.