interface赋值为nil,类型变化
Code
1 |
|
解释
首先 p
类型为 *int
类型是没有问题的
但是 i
变量的类型 变成了 nil
,为什么?
chatGPT 给的解释:
在 Go 中,一个接口值包含两个部分:一个具体的类型和一个具体的值。当你将一个 nil 值赋给一个接口变量时,这个接口变量的类型部分会变成 nil,但它仍然是一个合法的接口。
这意味着尽管 i 是一个接口类型的变量,但它的类型部分是 nil。当你使用 %T 格式化符号来打印它的类型时,它会显示为 nil 类型。