内存分配:new只负责内存分配,而make不仅分配内存,还会初始化引用类型。 返回值:new返回的是一个指向内存的指针,而make返回的是初始化后的类型本身。 示例对比 funcmain(){// 使用 new 分配内存p :=new([]int) fmt.Println(p)// 输出 &[]// *p 是 nil,因为只是分配了指针,没有分配底层切片// 使用 make...
make:make只能用于创建slice、map和channel类型的对象,这三种类型属于引用类型。new:new用于创建所有类型的对象,返回的是指向新分配的零值对象的指针,适用于所有类型。 二、返回类型make:make返回的是一个被初始化后的(非零值)的引用类型对象,而不是指针。new:new返回的是一个指向新分配的零值对象的指针。 三、用途...
但不同的是,new分配空间后,是将内存清零,并没有初始化内存;而make分配空间后,是初始化内存,而不是清零。 2.分配内存的区别 new(T)为每个类型分配一片内存,而make专门用于为slice,map和chan三种类型分配内存。 3.返回类型的区别 new返回的是指向类型的指针;而make的返回类型与其参数的类型相同,而不是指向它的...
在Go语言中,make和new是两个内置的函数(built-in functions),用于分配内存,但它们之间有显著的区别,主要体现在它们被用于不同类型的对象分配内存。 new new关键字用于分配内存。更确切地说,它分配了零值初始化的内存空间,并返回指向这个新分配类型的指针。它只用于内建的数据类型(如int、float64、struct等),或者任...
那就是new和make这两个内置函数的区别。其实这个问题本身并不复杂,简单来说就是,new只分配内存,而make只能用于slice、map和chan的初始化。总结如下:1⃣️make只能用于分配及初始化类型为slice、map和chan的数据。new可以分配任意类型的数据;2⃣️new分配返回的是指针,即类型*Type。make返回类型本身,即Type;...
phonegap1001楼•4 个月前
Go语言中new和make是内建的两个函数,主要用来创建分配类型内存。new可以用于对任何类型的内存分配,并...
这里要注意了,make 只能用于 slice、map 和 channel 这三种引用类型。就像一个包工头,make 不但帮你建了房子,还把家具摆好,水电全都接通了,直接拎包入住。比如,make([]int, 10) 会创建一个长度为 10 的 slice,并且可以直接使用。 看到了吧?new ...
在Go 语言中,new和make是两个用于内存分配的内置函数,但它们有不同的用途和行为。理解它们之间的区别对于正确地使用 Go 语言的内存管理至关重要。 new和make的区别 new函数: 用途:new用于为变量分配内存,并返回指向该内存的指针。 返回值:new返回的是一个指向类型的指针,且该内存区域会被初始化为零值(例如整数为...
make和new共同点都是可以开辟内存空间,给变量分配内存。 不同点在于: 两者的作用类型不同,new给int、string、数组分配内存,make给slice、map、channel分配内存。 两者的返回值不同,new的返回值类型为一个指向新分配好的内存空间的一个指定类型指针。而make的返回值类型为它本身。