在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
自:http://www.cnblogs.com/ghj1976/archive/2013/02/12/2910384.html 1、make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。 2、new本质上说跟其它语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。有一点非常重要:new返回指针。
4、本质来讲,导致这三个内建类型有所不同的原因是:引用在使用前必须被初始化。例如,一个slice,是一个包含指向数据(内部array)的指针、长度和容量的三项描述符;在这些项目被初始化之前,slice为nil。对于slice、map和channel来说,make初始化了内部的数据结构,填充适当的值。make返回初始化后的(非零)值。 5、故make 是内建类型初始化的方法,例如:s :=make([]int,len,cap) //这个切片在元素在超过10个时,底层将会发生至少一次的内存移动动作
|
请发表评论