[Go] 理解(*interface{})(nil) 赋值的变量是否为nil
2023-02-18 15:37:15 时间
现在有这样两种赋值方式
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)
相关文章
- Linux 常用命令(持续补充)
- 云小课|3种常用Git工作流推荐
- 实践GoF的23种设计模式:装饰者模式
- git bisect:让你闭眼都能定位疑难 bug的利器
- 通用权限管理系统多语言开发标准接口 - java,php 调用标准接口程序参考
- 收到Sybase公司PowerDesigner产品的律师函后,只能改进一下思路了
- 实践GoF的设计模式:工厂方法模式
- 有了这10个GitHub仓库,开发者如同buff加持
- 【clickhouse专栏】对标mongodb存储类JSON数据文档统计分析
- linux-ext4格式文件误删除,该如何恢复?
- linux挂载新硬盘并进行分区格式化
- linux系统下文件误删除该如何恢复?
- MongoDB设计方法及技巧
- 实践GoF的23种设计模式:建造者模式
- 设备如何使用go sdk轻松连接华为云IoT平台?
- 一个故事看懂Linux文件权限管理
- 闯荡Linux帝国:nginx的创业故事
- 实践GoF的设计模式:单例模式
- Go 1.18 新特性:多模块工作区模式
- 用过 mongodb 吧, 这三个大坑踩过吗?