Go學習筆記-切片的聲明中new()和make()的區別是什麼

  都在堆上分配內存,可是它們的行爲不一樣,適用於不一樣的類型數組

  不一樣:函數

  • new(T) 爲每一個新的類型T分配一片內存,初始化爲 0 而且返回類型爲*T的內存地址:這種方法 返回一個指向類型爲 T,值爲 0 的地址的指針,它適用於值類型如數組和結構體;它至關於 &T{}
  • make(T) 返回一個類型爲 T 的初始值,它只適用於3種內建的引用類型:切片、map 和 channel。

  總結:換言之,new 函數分配內存,make 函數初始化指針

 

  

相關文章
相關標籤/搜索