golang(* interface {})(nil)是否为零?
代码段如下:
package main import ( "fmt" "reflect" ) func main() { a := (*interface{})(nil) fmt.Println(reflect.TypeOf(a),reflect.ValueOf(a)) var b interface{} = (*interface{})(nil) fmt.Println(reflect.TypeOf(b),reflect.ValueOf(b)) fmt.Println(a == nil,b == nil) } 输出如下: *interface {} <nil> *interface {} <nil> true false 所以var interface {}不同于:=,为什么?
根据
golang faq
a:=(* interface {})(nil)等于var a * interface {} = nil. 但是var b interface {} =(* interface {})(nil),mean b是type interface {},而interface {}变量只有nil,当它的类型和值都是nil时,显然type * interface {}不是nil . (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |