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的使用和区别的主要内容,如果未能解决你的问题,请参考以下文章