问问题描述
答精选答案

在Go语言中,`new`和`make`都是用于内存分配的关键字,但它们有以下主要区别:
作用对象不同 :
`new`用于为各种类型的变量分配内存,包括基本类型和复合类型(如结构体、数组等),并返回指向该内存地址的指针。
`make`专门用于为切片(slice)、映射(map)和信道(channel)分配内存,并返回这些类型的实例,而不是指针。
返回值不同 :
`new`返回一个指向类型的指针,该内存区域会被初始化为零值。
`make`返回一个已经初始化的实例,对于切片和信道,它还会分配并初始化内部数据结构。
适用类型不同 :
`new`可以用于任何类型的内存分配。
`make`仅适用于切片、映射和信道。
初始化程度不同 :
`new`只分配内存,不进行初始化。
`make`不仅分配内存,还会对切片、映射和信道进行初始化。
举例来说:
本文来自作者[cqy范丞丞]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/jiaoyuchangshi/202609/2140000.html
评论列表(4条)
我是公众科技网的签约作者“cqy范丞丞”!
希望本篇文章《new和make有什么区别》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:在Go语言中,`new`和`make`都是用于内存分配的关键字,但它们有以下主要区别:作用对象不同 : `new`用于为各种类型的变量分配内存,包括基本类型和复合类型(如结构体、数组等),并返回指向该内存地址的指针。 `make`专门用于为切片(slice)、映射(map)和信道(channel)分配内存,并返回这些类型的实例,而不是指针。返回值不同 : `new`返回一个指向类型的指针,该内存区域会被初始化为零值。 `make`返回一个已经初始化的实例,对于切片和信道,它还会分配并初始化内部数据结构。适