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

2021-01-16 10:13

阅读:502

标签:数据   返回值   另一个   而不是   声明   创建   函数   func   引用   

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的使用和区别

标签:数据   返回值   另一个   而不是   声明   创建   函数   func   引用   

原文地址:https://www.cnblogs.com/zz8781/p/12748529.html


评论


亲,登录后才可以留言!