nil的动态值和动态类型

题目:

下面这段代码输出什么?

1
2
3
4
5
6
7
8
func main() {  
var i interface{}
if i == nil {
fmt.Println("nil")
return
}
fmt.Println("not nil")
}
  • A. nil
  • B. not nil
  • C. compilation error

答案解析:

这是很常见的问题。

参考答案及解析:A。

​ 在 Go 语言中,接口的动态值(dynamic value)是指接口变量实际持有的值,而动态类型(dynamic type)是指接口变量所对应的具体类型。

​ 当且仅当接口的动态值和动态类型都为 nil 时,接口类型值才为 nil。


nil的动态值和动态类型
http://example.com/2023/06/17/Go每日一题/nil的动态值和动态类型/
作者
Feng Tao
发布于
2023年6月17日
更新于
2023年6月17日
许可协议