由于类型变量interface{}可以有任何值,这是否意味着它本质上是一个通用指针,如 C 中的 void*?
温温酱
浏览 353回答 2
2回答
临摹微笑
虽然 C 的void *指针和 Go 的interface{}变量共享可以存储任意类型的属性,但有一个很大的区别:Go 接口变量还存储它们所持有的值的类型。因此,虽然希望 C 程序员确保从void *指针到特定类型的任何强制转换都是安全的,但 Go 运行时可以检查任何类型断言是否正确。在接口变量中找到的类型信息还允许通过reflect包进行复杂的运行时自省,这对于普通void *指针是不可能的。