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

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

DDD
发布: 2024-11-27 03:07:09
原创
895 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板