new和make有什么区别

问问题描述

new和make有什么区别希望能解答下

答精选答案

最佳答案

在Go语言中,`new`和`make`都是用于内存分配的关键字,但它们有以下主要区别:

作用对象不同 :

`new`用于为各种类型的变量分配内存,包括基本类型和复合类型(如结构体、数组等),并返回指向该内存地址的指针。

`make`专门用于为切片(slice)、映射(map)和信道(channel)分配内存,并返回这些类型的实例,而不是指针。

返回值不同 :

`new`返回一个指向类型的指针,该内存区域会被初始化为零值。

`make`返回一个已经初始化的实例,对于切片和信道,它还会分配并初始化内部数据结构。

适用类型不同 :

`new`可以用于任何类型的内存分配。

`make`仅适用于切片、映射和信道。

初始化程度不同 :

`new`只分配内存,不进行初始化。

`make`不仅分配内存,还会对切片、映射和信道进行初始化。

举例来说:

本文来自作者[cqy范丞丞]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/jiaoyuchangshi/202609/2140000.html

赞 (0)

发表回复

本站作者后才能评论

评论列表(4条)

  • cqy范丞丞
    cqy范丞丞 2026年09月30日

    我是公众科技网的签约作者“cqy范丞丞”!

  • cqy范丞丞
    cqy范丞丞 2026年09月30日

    希望本篇文章《new和make有什么区别》能对你有所帮助!

  • cqy范丞丞
    cqy范丞丞 2026年09月30日

    本站[公众科技网]内容主要涵盖:教育咨询,知识百科

  • cqy范丞丞
    cqy范丞丞 2026年09月30日

    本文概览:在Go语言中,`new`和`make`都是用于内存分配的关键字,但它们有以下主要区别:作用对象不同 : `new`用于为各种类型的变量分配内存,包括基本类型和复合类型(如结构体、数组等),并返回指向该内存地址的指针。 `make`专门用于为切片(slice)、映射(map)和信道(channel)分配内存,并返回这些类型的实例,而不是指针。返回值不同 : `new`返回一个指向类型的指针,该内存区域会被初始化为零值。 `make`返回一个已经初始化的实例,对于切片和信道,它还会分配并初始化内部数据结构。适

联系我们

联系:143 0457 151

工作时间:周一至周五,9:30-18:30,节假日休息

关注我们