返回

Go make 和 new 的区别

见解分享

在Go语言中,make和new都是用来分配内存的内置函数,但它们之间存在一些区别。

make用于分配切片、映射和通道等复合数据类型,而new用于分配基本数据类型和结构体等非复合数据类型。

make会自动初始化分配的内存,而new则不会。因此,在使用new分配内存时,需要手动初始化分配的内存。

make可以接受可变参数,而new只能接受一个参数。

make返回的是指向分配的内存的指针,而new返回的是分配的内存本身。

例如,以下代码使用make分配了一个长度为10的切片:

slice := make([]int, 10)

以下代码使用new分配了一个长度为10的结构体:

type Point struct {
    x int
    y int
}

point := new(Point)

在大多数情况下,make和new都是可以互换的。但是,在某些情况下,需要使用make或new中的一个来分配内存。例如,当需要分配一个空切片时,必须使用make,而当需要分配一个基本数据类型时,必须使用new。

Go make 和 new 的区别

在 Go 语言中,make 和 new 都是用来分配内存的内置函数,但它们之间存在一些区别。

用途

  • make 用于分配复合数据类型,如切片、映射和通道。
  • new 用于分配非复合数据类型,如基本数据类型和结构体。

初始化

  • make 会自动初始化分配的内存。
  • new 不会自动初始化分配的内存。

参数

  • make 可以接受可变参数。
  • new 只接受一个参数。

返回值

  • make 返回指向分配的内存的指针。
  • new 返回分配的内存本身。

效率

  • make 比 new 更高效。

适用场景

  • make 通常用于分配复合数据类型,如切片、映射和通道。
  • new 通常用于分配非复合数据类型,如基本数据类型和结构体。

优缺点

  • make 的优点是效率高,并且可以自动初始化分配的内存。
  • make 的缺点是只能用于分配复合数据类型。
  • new 的优点是可以用于分配任何类型的数据,并且可以手动初始化分配的内存。
  • new 的缺点是效率较低,并且需要手动初始化分配的内存。

总结

make 和 new 都是 Go 语言中用来分配内存的内置函数,但它们之间存在一些区别。make 用于分配复合数据类型,new 用于分配非复合数据类型。make 会自动初始化分配的内存,而 new 则不会。make 可以接受可变参数,而 new 只接受一个参数。make 返回指向分配的内存的指针,而 new 返回分配的内存本身。make 比 new 更高效。make 通常用于分配复合数据类型,如切片、映射和通道。new 通常用于分配非复合数据类型,如基本数据类型和结构体。make 的优点是效率高,并且可以自动初始化分配的内存。make 的缺点是只能用于分配复合数据类型。new 的优点是可以用于分配任何类型的数据,并且可以手动初始化分配的内存。new 的缺点是效率较低,并且需要手动初始化分配的内存。