Sobes.tech
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.