Junior — Middle
Kāda ir atšķirība starp tukšu interfeisu un interfeisu ar nil vērtību Go programmēšanas valodā?
sobes.tech AI
Atbilde no AI
Go valodā tukšais interfeiss interface{} ir interfeiss, kas nesatur metodes un var glabāt jebkura veida vērtību. Tomēr, kad mainīgais ar interfeisa tipu satur nil, ir svarīgi saprast, kas tieši ir nil.
- Tukšs interfeiss, bez vērtības: mainīgais ar interfeisa tipu, kas nenorāda uz jebkuru vērtību, tiek uzskatīts par nil.
- Interfeiss ar nil vērtību: ja interfeiss satur konkrētu tipu, bet šī tipa vērtība ir nil, tad pats interfeiss nav vienāds ar nil, jo tas satur informāciju par tipu.
Piemērs:
var i interface{} // i == nil
var p *int = nil // p == nil
i = p // i != nil, jo tas satur *int tipu, bet vērtība ir nil
fmt.Println(i == nil) // false
fmt.Println(p == nil) // true
Svarīgi ņemt vērā šo, pārbaudot ar nil, lai izvairītos no neparedzētām kļūdām.