golang原理篇- nil:接口類型和值類型的區別


  interface接口類型是golang的最重要的數據結構,底層是value和type組成,實現interface的struct的實例都能賦值給接口類型的變量,實現動態value的能力。type記錄value的類型。

int 3 的接口表示是(int, 3),接口的零值是 (nil, nil);就是說一個interface的nil是 type和value都是nil,所以會出現nil的interface和值的nil比較的時候永遠不等。

var i interface{}
var p *int
fmt.Println(p == nil)
fmt.Println(i == nil)
fmt.Println(i == p)
i = p
println(i != nil) // true
fmt.Println(i.(*int) == nil)

 指針的零值是nil,可以通過反射將接口轉換成指針類型

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM