go语言中new与make的使用和区别

Posted zz8781

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言中new与make的使用和区别相关的知识,希望对你有一定的参考价值。

2020-04-21

make和new是go语言的两个内建函数,主要用来创建分配类型内存。

new

new函数的声明:func new(Type) *Type

new()只接受一个参数,此参数是一个类型,分配指向该类型内存地址的指针,同时将该内存的数据置为0;

也就说new不能new引用类型,new的返回值 指向引用的指针,并把引用置为0, 也就是new的返回值是指向另一个空引用的指针。无效

1 i := new(int)
2 fmt.Println(i)//0xc0000160a0 返回指针
3 fmt.Println(*i)//0           初始化为0

make

make函数声明:func make(t Type, size, ...IntegerType) Type

make也用于内存分配,但只能用于chan、map以及切片的内存创建,返回的是类型本身,而不是指针,因为这三个类型本身就是引用类型,没必要返回指针。make也会初始化,但不是置为0

m := make([]int,2)
fmt.Println(m)//[0 0]  将切片中的数据初始化为0 返回值是一个引用

 

以上是关于go语言中new与make的使用和区别的主要内容,如果未能解决你的问题,请参考以下文章

Go 中make和new有什么区别

Go 中make和new有什么区别

Go语言中new与make的区别

Go语言 make和new关键字的区别

Go语言中new和make的区别

Go语言中new和 make的区别详解