Middle
Kas yra nil sąsaja?
sobes.tech AI
Atsakymas iš AI
Go kalboje, nil interfeisas yra interfeiso reikšmė, kuri neapima jokio konkretaus tipo ar reikšmės. Go interfeisas yra vaizduojamas dviem dalimis: tipu ir reikšme. Interfeisas laikomas nil, jei abi dalys yra lygios nil.
Svarbu suprasti, kad interfeisas gali turėti nil nuorodą į konkretų tipą, tačiau pats interfeisas nebus nil, nes tipas yra nustatytas.
Pavyzdys:
var i interface{} // i == nil
var p *int = nil
var i2 interface{} = p // i2 != nil, nes *int tipas yra nustatytas, nors reikšmė yra nil
fmt.Println(i == nil) // true
fmt.Println(i2 == nil) // false
Dažnai tai sukelia klaidų, kai tikrinama, ar interfeisas yra nil, tačiau jis turi nil nuorodą, ir sąlyga nepavyksta.
Todėl dirbant su interfeisais, svarbu atsiminti, kad nil interfeisas yra interfeisas be tipo ir reikšmės tuo pačiu metu.