一尘不染

我为什么要make()或new()?

go

简介文档中有很多段落专门介绍了new()和之间的区别make(),但是实际上,您可以在本地范围内创建对象并将其返回。

为什么要使用一对分配器?


阅读 223

收藏
2020-07-02

共1个答案

一尘不染

您可以做的事情make,您无法做其他任何事情:

  • 建立频道
  • 创建一个预先分配了空间的地图
  • 创建具有预分配空间或len!= cap的切片

证明有一点困难new。使它变得更容易的主要事情是创建指向非复合类型的指针。以下两个功能是等效的。简而言之:

func newInt1() *int { return new(int) }

func newInt2() *int {
    var i int
    return &i
}
2020-07-02