golang 反射_golang原理篇- nil:接口类型和值类型的区别

 interface接口类型是golang的最重要的数据结构,底层是value和type组成,实现interface的struct的实例都能赋值给接口类型的变量,实现动态value的能力。type记录value的类型。

9ffb95ccedabe67f6e1315788d6f3de8.png

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,可以通过反射将接口转换成指针类型


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部