golang中,unsafe.sizeof到底是干嘛的?
2024-09-05 01:06:01
https://www.golangtc.com/t/5ad833404ce40d2654053485
小生初学Go,有一点不懂,今天为了知道空结构体到底占多大的空间的时候,去百度说用unsafe.sizeof,但是对于unsafe.sizeof好像和其它语言的sizeof有些不一样?
比如:
var str string = "hello"
var str2 string
fmt.Println(unsafe.SizeOf(str), unsafe.SizeOf(str2))
结构两个打印出来都是16,这是为啥?
到底怎样来获取结构体占的空间大小?
空结构体占多大的空间?
共 1 个回复
heimeil 2018-04-19 19:56
只返回数据类型的大小,不管引用数据的大小,string
类型不是直接存的数据,而是一个结构体,用指针指向实际数据地址
type StringHeader struct {
Data uintptr
Len int
}
在64位系统上uintptr
int
都是8字节,加起来就16了。
https://golang.org/pkg/reflect/#StringHeader
初步解释:因为Golang中的sring内部实现由两部分组成,一部分是指向字符串起始地址的指针,另一部分是字符串的长度,两部分各是8字节,所以一共16字节
最新文章
- php跳转页面
- js_事件委托
- 你知道吗?使用任何HTML5开发工具都可开发iOS、Android原生App
- 64位Windows下安装Redis教程
- html特殊符号
- yml文件数据的简洁表达方法(Hashes to OpenStruct)
- HDOJ-1012 u Calculate e(水)
- uva 357 Let Me Count The Ways(01背包)
- 职业定位(Web前端、后台、PC端)
- JavaScript设计模式之构造器、模块和原型
- 网络基础二 tcp/ip协议簇 端口 三次握手 四次挥手 11种状态集
- MySQL多数据源笔记2-Spring多数据源一主多从读写分离(手写)
- tensorflow--交叉熵
- ASP.NET 教程汇总
- leetcode02大数相加
- 无损压缩PNG工具
- Java基础语法 第3节 常用软件安装-Webstorm
- Java虚拟机------JVM分析工具
- openstack的Host Aggregates和Availability Zones
- Win7删除网络位置那些不用的网络位置(驱动器)