假设我有以下类型定义:type ICat interface { Meow() string} type Cat struct { Name string}func (c Cat) Meow() string { return "Meow" }当我执行此操作时:var a Cata.Name = "Tom"在内存中分配 Cat 类型的结构,并分配其字段之一。但是,如果执行以下操作:var b ICat内存中究竟分配了什么?Golang 接口只是一个包含指向另一个结构的指针的结构吗?一个“盒装指针”?
1 回答

qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
接口包含两个东西:指向基础数据的指针和该数据的类型。因此,当您声明
var b ICat
b
包含这两个元素。
当您执行以下操作时:
b:=Cat{}
b
现在包含一个指向 的副本的指针,以及数据是 .Cat{}
struct Cat
当您执行以下操作时:
b:=&Cat{}
b
现在包含指向 的指针的副本,以及它是 .Cat{}
*Cat
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报
0/150
提交
取消