• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

[Go]理解(*interface{})(nil)赋值的变量是否为nil

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

现在有这样两种赋值方式

a := (*interface{})(nil)

var c interface{}
c = (*interface{})(nil)

 

a现在是啥 ?

(*interface{})(nil) 意思是把nil 类型转换为  *interface{}类型

a相当于  var a *interface{} = nil    ,  a是个指针 , 指向了nil  , 所以a是nil

 

c现在是啥 ?

c是 interface{} 类型 , 这个类型有两个属性 , type和data  , 

c的type属性是*interface{}   有值  ,  c的data属性是nil 无值

只有当type和data都是nil时  ,  空接口才是nil  ,  所以c不是nil 

 

    a := (*interface{})(nil)
    log.Printf("%v\n", a == nil)
    var c interface{}
    c = (*interface{})(nil)
    log.Printf("%v\n", c == nil)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
1.1安装 Go发布时间:2022-07-10
下一篇:
在go/golang语言中使用googleProtocolBuffer发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap