Go 中获取结构大小的通用函数
这个问题解决了如何创建一个通用函数来确定 Go 中任何数据结构的大小Go,类似于C的sizeof函数。开发人员尝试使用接口和反射来完成此任务,但遇到了错误的结果。
理解问题
提供的代码计算的是reflect.Value结构的大小,而不是存储在 T 接口中的对象。这是由于使用reflect.ValueOf(T)造成的。要解决此问题,需要使用 Reflect.TypeOf(T).Size() 确定类型的大小,而不是值。
更正的代码:
func getSize(T interface{}) { v := reflect.ValueOf(T) size := reflect.TypeOf(v).Size() fmt.Println(size) }
修订后的输出:
经过此更正,代码返回考虑到填充,给定结构的预期大小为 40。
以上是如何获取 Go 中任意数据结构的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!