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 . (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
