go中new和make有什么异同?
相同点:都是给变量分配内存
不同点:
- 作用类型不同。new通常给int、string、数组类型的变量分配内存,而make通常给slice、map、channel分配内存。
- 返回值类型不同。new返回指向变量的指针,make返回的是变量本身
- new分配内存空间后,会给变量(不是指针)初始化为0值。而make会根据不同的类型进行初始化,对于切片,会初始化长度和容量;对于映射,会创建一个空的map;对于通道,会创建一个指定缓冲区大小的channel。
相同点:都是给变量分配内存
不同点: