make:make只能用于创建slice、map和channel类型的对象,这三种类型属于引用类型。new:new用于创建所有类型的对象,返回的是指向新分配的零值对象的指针,适用于所有类型。 二、返回类型make:make返回的是一个被初始化后的(非零值)的引用类型对象,而不是指针。new:new返回的是一个指向新分配的零值对象的指针。 三、用途...
内存分配:new只负责内存分配,而make不仅分配内存,还会初始化引用类型。 返回值:new返回的是一个指向内存的指针,而make返回的是初始化后的类型本身。 示例对比 funcmain(){// 使用 new 分配内存p :=new([]int) fmt.Println(p)// 输出 &[]// *p 是 nil,因为只是分配了指针,没有分配底层切片// 使用 make...
在Go语言(golang)中,make和new有以下区别:1.初始化的区别;2.分配内存的区别;3.返回类型的区别;4.语法上的区别;5.实用性的区别。初始化的区别体现于,new分配的空间会被清零;而make分配空间后,会进行初始化。 1.初始化的区别 make和new都是golang用来分配内存的內建函数,且在堆上分配内存。但不同的是,new...
在Go语言中,make和new是两个常用的内置函数,用于分配内存和初始化变量,但它们之间存在显著的差异。下面将详细解释这两个关键字的基本功能、使用区别、实现原理以及使用建议。 1. 基本功能 new: new函数用于分配指定类型的零值变量,并返回该变量的指针。 它适用于所有类型,包括基本类型(如int、float等)和复合类型(...
phonegap1001楼•4 个月前
在Go语言中,make 和 new 是两个内置的函数(built-in functions),用于分配内存,但它们之间有显著的区别,主要体现在它们被用于不同类型的对象分配内存。 new new关键字用于分配内存。更确切地说,它分配了零值初始化的内存空间,并返回指向这个新分配类型的指针。它只用
在Go 语言中,new和make是两个用于内存分配的内置函数,但它们有不同的用途和行为。理解它们之间的区别对于正确地使用 Go 语言的内存管理至关重要。 new和make的区别 new函数: 用途:new用于为变量分配内存,并返回指向该内存的指针。 返回值:new返回的是一个指向类型的指针,且该内存区域会被初始化为零值(例如整数为...
看到了吧?new 和 make 的区别就在这:new 是给你一个空的房间指针,你得自己来填充内容;而 make 是给你一个已经装修好的房间,可以直接用。new 主要用于结构体或数组这种值类型的指针分配,而 make 则是专门服务于 slice、map 和 channel。 既然我们在...
make也是用于内存分配的,但是和new不同,它只用于channel、map以及slice的内存创建,而且它返回的类型就是这三个类型本身,而不是他们的指针类型。 3.2 make函数的Demo func main() { mapDemo := make(map[string]string) fmt.Println("mapDemo: ", mapDemo) //demo: map[] chanDemo := make(chan int, 10...
今天正式开始分享Go语言面试题系列,目标是100道。第一道题目非常经典,可能很多面试的开场白就是由此开始的。那就是new和make这两个内置函数的区别。其实这个问题本身并不复杂,简单来说就是,new只分配内存,而make只能用于slice、map和chan的初始化。总结如下:1...