Кай вақт дар барномасозӣ интерфейс метавонад арзиши nil дошта бошад ё номуайян бошад?
sobes.tech AI
Ҷавоб аз AI
Дар Го, интерфейс метавонад арзиши nil дошта бошад ё номуайян бошад дар ҳолатҳои зерин:
-
Параметри интерфейс номуайян аст Агар параметри интерфейс эълон шуда бошад, аммо ба он арзише дода нашуда бошад, он баробар ба
nilаст. -
Интерфейс дорои ишоракунандаи сифрӣ аст Дар Го, интерфейс аз ду қисм иборат аст: навъ ва арзиш. Агар навъ муайян карда шуда бошад, аммо арзиш ишоракунандаи сифрӣ (
nil) бошад, интерфейс баробар баnilнест, ҳарчанд арзиши дохилӣ вуҷуд надошта бошад. -
Пас додани
nilба интерфейс Агар ба интерфейс арзишиnilаз навъҳои муайян (масалан,(*MyStruct)(nil)) гузоред, интерфейс баробар баnilнахоҳад буд, зеро навъ мавҷуд аст.
Масалан:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, зеро навъи *int мавҷуд аст, аммо арзиш `nil`
if i == nil {
fmt.Println("i `nil`")
} else {
fmt.Println("i `nil` нест")
}
Муҳим аст, ки инро дар назар дошта бошед ҳангоми санҷишҳо барои nil то аз натиҷаҳои бардурӯғ пешгирӣ кунед.