Go 中 make 與 new 的區別是什麼?

newbie發表於2020-02-27

我理解的是:

  • new 會初始化值型別(如果 int,string,struct ),並返回指向該型別值的指標
  • ( map/slice/chan )使用 make,make 返回的是型別本身,引用型別沒必要返回他們的指標

但是網上經常出現這樣的解釋:

  • new 是用來分配記憶體的內建函式, 但與其它語言中的同名函式不同,它不會 “初始化記憶體”,只會將 “記憶體置零"
  • make 只用於建立切片、對映和通道,並返回型別為 T (而非 *T )的一個已初始化 (而非置零)的值

我不明白,初始化記憶體,記憶體置零有什麼區別,記憶體都置零了,難道還沒有初始化記憶體嗎

更多原創文章乾貨分享,請關注公眾號
  • Go 中 make 與 new 的區別是什麼?
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章