问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Golang中new和make的区别

发布网友 发布时间:2022-04-11 09:53

我来回答

2个回答

热心网友 时间:2022-04-11 11:22

new是内建函数,作用是初始化一个指向类型的指针,make的作用是slice,map或chan初始化并返回引用,第一个参数是一个类型,第二个参数是长度。

热心网友 时间:2022-04-11 12:40

new会分配结构空间,并初始化为清空为零,不进一步初始化
new之后需要一个指针来指向这个结构
make会分配结构空间及其附属空间,并完成其间的指针初始化
make返回这个结构空间,不另外分配一个指针
例子new:
var p *[]int = new([]int)

p := new([]int)
以上分配了一个slice结构,但是结构中的应该指向底层数组的ptr指针为空,故实际不能往这个slice里面存取数据
同时分配了一个指针p,也即(在32位系统中)占4个字节并存放slice结构的地址
例子make:
var v []int = make([]int, 0)
v := make([]int, 0)
以上分配了一个slice结构,且结构中的应该指向底层数组的ptr指针已经指向了某个底层数组,这个底层数组应该已经分配了,故这个slice已经可以使用了
注意v就是这个slice结构,而不是一个指向slice的指针
上述仅是示例,一般使用时都会明确长度和容量:v := make([]int, 10, 50)
结论:
由上可见,用new来分配slice的意义不大,因为没有恰当的初始化,无法直接使用

Golang中new和make的区别
http://blog.csdn.net/max2005/article/details/9171791
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? 怎么查看笔记本电脑摄像头是否正常 摄像头怎么在电脑上看啊! 一个手机号怎么申请第二个 怎么打开家里电脑上的摄像头 我的手机号被另一个绑定了。怎么弄回来呀?没有第二个手机号码了怎么办 古人说“正月打雷,遍地是贼”,原来是这样解释的! 高铁一等座在哪个车厢 女,115斤目前跑步6公里,想买款亚瑟士的跑鞋,是选kayano还是gt2000呢?大神们给个建议 asics亚瑟士gt2000怎么样 亚瑟士gt2000 脚尖易戳破吗 亚瑟士gtmotor重量 NIKE AIR ZOOM PEGASUS 34和亚瑟士gt-2000 4性价比,哪双跑步值得买! 亚瑟士gt1000和gt2000有什么区别 亚瑟士gt2000 4代和3代有什么不同 亚瑟士motor和gt1000谁更好? GoLang 如何动态给结构体添加字段 电脑长时间不用,会不会老化 怎么修改QQ上的时间? 怎样去掉QQ聊天信息上的时间 QQ怎麽把发消息的时候上面的时间去掉 怎么找到电脑上的摄像头 如何申请第二个? 怎样打开电脑上已经有的摄像头? 一个手机号怎么申请第二个? 知之为知之什么是知也? 子曰由诲女知之乎知之为知之不知为不知是知也 注音 敏儿好学不耻下问知之为知之不知为不知是知也默而知之学而不厌诲人不倦拼音? 机电一体化大专想考注册电气工程师 "知之为知之,不知为不知,是知也"这句话中的"是知也"的知正确读音是什么、怎么解释? 大专生考注册电气工程师 大专毕业可以直接考注册电气工程师吗 知之为知之不知为不知是知也的读音 敏而好学,不耻下问,知之为知知之,不知为不知,是知也,默而识之,学而不厌,诲人不倦。的拼音? 子曰:由,诲汝知之乎!知之为知之,不知为不知,是知也的读音 外国投资者投资专用账户核准件由哪个部门签发? 论语中“知之为知之,不知为不知,是知也”中,最后一个“知”的读音应该是什么? 菠萝蜜属于什么性的水果? 诲2.海女知之乎 通 读音 知之为知之,不知为不知,是知也 问:外国投资者参与境内土地使用权竞标时如何办理资金划转? 菠萝蜜属于什么水果