You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中无需初始化结构体变量获取其内存占用大小的方法

Go中获取未初始化大型结构体的内存占用大小

你可以通过两种无初始化开销的方式实现,完全避开需要实例化结构体变量的限制:

  • 使用unsafe.Sizeof配合结构体零值字面量:
    直接编写unsafe.Sizeof(MyStruct{})。Go编译器会在编译阶段直接计算出该结构体的内存大小,将代码替换为常量值,不会在运行时实际创建任何结构体实例,完全没有初始化开销。

  • 使用反射包通过nil指针获取类型尺寸:
    代码示例:reflect.TypeOf((*MyStruct)(nil)).Elem().Size()。这里通过nil指针获取结构体的类型元信息,不会分配任何结构体内存;且Go运行时会缓存类型信息,多次调用也不会产生额外开销。

这两种方式都能达到类似C语言sizeof的编译时/低开销效果,完全不需要初始化结构体变量。

内容的提问来源于stack exchange,提问作者Nitin Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 17:52:09