龙行博客

走路看风景,经历看人生,岁月留痕迹,人生留轨迹,17的历史,18的豪情,时间的匆忙,人生的风景,放开心胸往前走,成功再远行,放开理想往前走,梦想再行动。
现在位置:首页 > 编程语言 > Golang > Go基础-make,new

Go基础-make,new

龙行    Golang    2020-3-11    409    0评论    

Go基础-make,new

make用于内建类型(mapslicechannel)的内存分配.new用于各种类型的分配.

内建函数new本质上说跟其它语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值.用Go的术语来说,它返回了一个指针,指向新分配的类型T的零值.有一点非常重要:

new返回指针

内建函数make(T,args)new(T)有着不同的功能,make只能创建slice,mapchannel,并且返回一个有初始值(非零)的T类型,而不是*T.本质来讲,导致这三个类型有所不同的原因是指向数据结构的引用在使用前必须被初始化.例如,一个slice,是一个包含指向数据(内部array)的指针,长度和容量的三项描述符;在这些项目被初始化之前,slicenil.对于slice.mapslice来说,make初始化了内部的数据结构,填充适当的值.

make返回初始化后的(非零)值

零值

关于零值,所指并非是空值,而是一种"变量未填充前"的默认值,通常为0,此处罗列部分类型的"零值"

int     0
int8    0
int32   0
int64   0
uint    0x0
rune    0 //rune的实际类型是 int32
byte    0x0 // byte的实际类型是 uint8
float32 0 //长度为 4 byte
float64 0 //长度为 8 byte
bool    false
string  ""
评论一下 分享本文 赞助站长

赞助站长X

扫码赞助站长
联系站长
龙行博客
  • 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
  • 本文网址:https://www.liaotaoo.cn/342.html
  • 上篇文章:thinkphp防止超卖
  • 下篇文章:Go基础-map
  • go golang
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
快捷导航
联系博主
在线壁纸
给我留言
四四五五
音乐欣赏
返回顶部