Go语言

关键字make和new的区别及应用

区别

new(T) 为每个新的类型 T 分配一片内存,初始化为 0 并且返回类型为 *T 的内存地址:这种方法 返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于 &T{}

make(T) 返回一个类型为 T 的初始值,它只适用于 3 种内建的引用类型:切片、map 和 channel。

换言之,new 函数分配内存,make 函数初始化

Go语言

 

 

map 不要使用new来初始化,用make函数来初始化

Go语言

 

 

slice的初始化

Go语言

 

 数组不能使用make初始化,但是可以使用new初始

 

 Go语言

 

结构体不能使用make,需要使用new和结构体本身

 Go语言

 

上一篇:自我介绍+课程六问


下一篇:Makefile4之书写命令(显示命令、 命令执行、命令出错 、嵌套执行Makefile、定义命令包)