什么时候反射type.Size()返回0?
我有一些使用反射来处理结构字段的通用代码。这些字段可能包含也可能不包含通过 Cgo 引用的 C 类型。
我遇到的一个问题是,这些上述的C类型可能是“不完整的结构”,例如:
typedef struct unknown u;。这可能会导致代码稍后出现恐慌。
为了避免这种情况,我想跳过这些字段。我发现检查reflect.TypewhereSize()返回0正确告诉我:
if myType.Size() == 0 {
return
}
但我想知道。是否有任何其他情况下 areflect.Type将返回大小0?换句话说,是否有可能跳过任何其他类型?
回答
没有成员的结构的大小为零。
reflect.TypeOf(struct{}{}).Size() == 0
在操场上运行它。