Junior — Middle
Kā atšķiras tukšas saskarnes izteiksme no nil vērtības Go valodā?
sobes.tech AI
Atbilde no AI
Go valodā tukšais interfeiss (interface{}) ir tips, kas var saturēt jebkāda veida vērtību, tostarp nil. Tomēr, tukšā interfeisa izteiksme un vērtība nil ir divas dažādas lietas.
var x interface{}— mainīgaisxir tukša interfeisa tips, kas pēc noklusējuma ir vienāds arnil, tas ir, tas nesatur ne tipu, ne vērtību.- Bet, ja tam piešķir kādu vērtību, piemēram,
x = 5, tadxvairs navnil, jo tas saturinttipu un vērtību5.
Atšķirība ir tā, ka Go iekšēji interfeiss ir attēlots ar diviem norādītājiem: uz tipu un uz vērtību. Interfeiss ir vienāds ar nil tikai tad, ja abi norādītāji ir nil.
Piemērs:
var i interface{} // i == nil
var p *int = nil
i = p // i nav `nil`, jo `*int` tips ir klātesošs, pat ja vērtība ir `nil`
fmt.Println(i == nil) // false
Tādējādi, tukšs interfeiss var saturēt nil vērtību konkrētam tipam, bet pats interfeiss nebūs nil. Tas ir svarīgs punkts nil pārbaudēs Go valodā.