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字节

最新文章

  1. php跳转页面
  2. js_事件委托
  3. 你知道吗?使用任何HTML5开发工具都可开发iOS、Android原生App
  4. 64位Windows下安装Redis教程
  5. html特殊符号
  6. yml文件数据的简洁表达方法(Hashes to OpenStruct)
  7. HDOJ-1012 u Calculate e(水)
  8. uva 357 Let Me Count The Ways(01背包)
  9. 职业定位(Web前端、后台、PC端)
  10. JavaScript设计模式之构造器、模块和原型
  11. 网络基础二 tcp/ip协议簇 端口 三次握手 四次挥手 11种状态集
  12. MySQL多数据源笔记2-Spring多数据源一主多从读写分离(手写)
  13. tensorflow--交叉熵
  14. ASP.NET 教程汇总
  15. leetcode02大数相加
  16. 无损压缩PNG工具
  17. Java基础语法 第3节 常用软件安装-Webstorm
  18. Java虚拟机------JVM分析工具
  19. openstack的Host Aggregates和Availability Zones
  20. Win7删除网络位置那些不用的网络位置(驱动器)

热门文章

  1. 框架之一:mybatis
  2. c++ 数组 结构体
  3. 第五章 动画 44:动画-使用第三方animate.css类库实现动画
  4. Codeforces Round #593 (Div. 2) D. Alice and the Doll
  5. 高性能mysql 第4章 Schema与数据类型优化
  6. 根据IP 自动识别国家和城市
  7. 【Python网络爬虫三】 爬取网页新闻
  8. Python 文件I/OⅢ
  9. c# 判断某个类是否实现某个接口
  10. document.writeln绑定数据 --点击跳转添加样式