Golang界面所需的空间

时间:2017-12-03 20:21:04

标签: go

Golang界面占用多少空间(以字节为单位)?

例如,哪个会占用更多空间?

type Stringer interface { String() string }

strSlice := make([]string, 4)
stringerSlice := make([]Stringer, 4)

2 个答案:

答案 0 :(得分:4)

  • 接口消耗2个字的内存:1个字用于运行时类型,1个字用于数据指针;
  • 字符串消耗2个字的内存:1个字用于基本指针,1个字用于长度;
  • slice消耗3个字的内存:1个字用于基本指针,1个字用于长度,1个字用于容量;
  • 功能,频道和地图消耗1个字。

基于机器类型(32位或64位),字长分别为4个字节长度或8个字节长度。

答案 1 :(得分:1)

Interace是一个由2个单词组成的结构:

  • 指向数据的指针
  • 指向itab的指针 - 方法表。

所以在64位机器上:它需要8 * 2 = 16个字节。