Junior — Middle
Дар бораи чӣ фарқ мекунад изҳороти интерфейси холӣ аз арзиши nil дар забони Go?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, интерфейси холӣ (interface{}) як навъи аст, ки метавонад арзиши ҳар гуна навъро дар бар гирад, аз ҷумла nil. Аммо, изҳороти интерфейси холӣ ва арзиши nil ду чизи гуногун мебошанд.
var x interface{}— тағйирёбандаиxаз навъи интерфейси холӣ, ки дар ҳолати пешфарз баробар боnilаст, яъне на навъ, на арзишро дар бар намегирад.- Агар ба
xарзише таъин кунед, масаланx = 5, пасxдигарnilнест, зеро он навъиintва арзиши5-ро дорад.
Фарқ дар он аст, ки интерфейс дар Go дар дохилӣ тавассути ду ишорагардонкарда нишон дода мешавад: ба навъ ва ба арзиш. Интерфейс танҳо дар сурате баробар бо nil аст, ки ҳарду ишорагардон nil бошанд.
Масал:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, зеро навъи *int вуҷуд дорад, ҳатто агар арзиш `nil` бошад
fmt.Println(i == nil) // false
Аз ин рӯ, интерфейси холӣ метавонад арзиши nil-ро аз навъи муайян дар бар гирад, аммо худи интерфейс бо nil баробар нахоҳад буд. Ин нуқтаи муҳим дар санҷишҳои nil дар Go мебошад.