go 什么类型的size 等于 0 ?

我在看slice源码时发现这样一段代码 et.size == 0

func growslice(et *_type, old slice, cap int) slice {
    ...
	if et.size == 0 {
		if cap < old.cap {
			panic(errorString("growslice: cap out of range"))
		}

		return slice{unsafe.Pointer(&zerobase), old.len, cap}
	}
    ...
}

什么时候size==0呢?

共 3 个回复


dahuangfeng

@a7a2 str.length指的是字符串长度, 这里的size指的是类型占的字节数吧, 比如int size就等于8

# 0

a7a2

当我没说过,当我遇到这样的问题我会修改代码+添加调试输出去验证他代表什么

# 1

everywan

空的 struct size是0.

# 2