假設我有以下類型定義: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 關注
- 98 瀏覽
添加回答
舉報
0/150
提交
取消