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,可以通過反射將接口轉換成指針類型