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 ստուգելիս՝ անակնկալ սխալներից խուսափելու համար։