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