Junior — Middle
Millal programmeerimises võib liides omada väärtust nil või olla määramata?
sobes.tech AI
Vastus AI-lt
Go keeles võib liides omada väärtust nil või olla määratlemata järgmistes olukordades:
-
Määramata liidese muutujat Kui liidese muutujat deklareeritakse, kuid sellele ei omistata väärtust, see on võrdne
nil-iga. -
Liides sisaldab null-viitavat Go-s koosneb liides kahest osast: tüübist ja väärtusest. Kui tüüp on määratud, kuid väärtus on null-viitav (
nil), siis liides ei ole võrdnenil-iga, kuigi sisemine väärtus puudub. -
niledastamine liidesele Kui edastate liidesele väärtusenilkindlast tüübist (näiteks(*MyStruct)(nil)), siis liides ei ole võrdnenil-iga, kuna tüüp on olemas.
Näide:
var i interface{} // i == nil
var p *int = nil
i = p // i != nil, kuna tüüp *int on olemas, kuid väärtus on `nil`
if i == nil {
fmt.Println("i on `nil`")
} else {
fmt.Println("i ei ole `nil`")
}
Oluline on seda arvestada nil kontrollimisel, et vältida valepositiivseid tulemusi.