首页 >后端开发 >Golang >如何获取 Go 中任意数据结构的大小?

如何获取 Go 中任意数据结构的大小?

DDD
DDD原创
2024-11-27 03:07:09832浏览

How Can I Generically Get the Size of Any Data Structure in Go?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn