2018-12-02

go new和make區(qū)別

new用來分配內(nèi)存,但與其他語言中的同名函數(shù)不同,它不會(huì)初始化內(nèi)存,只會(huì)講內(nèi)存置零;也就是說,new(T)會(huì)為類型為T的新項(xiàng)分配已置零的內(nèi)存空間,并返回他的地址,也就是一個(gè)類型為T的值。用Go的術(shù)語來說,它返回一個(gè)指針,改指針指向新分配的,類型為T的零值;
make的目的不同于new,它只用于slice,map,channel的創(chuàng)建,并返回類型為T(非指針)的已初始化(非零值)的值;出現(xiàn)這種差異的原因在于,這三種類型本質(zhì)上為引用類型,它們?cè)谑褂们氨仨毘跏蓟?br> 小結(jié):
new和make都在堆上分配內(nèi)存,但是它們的行為不同,適用于不同的類型。
new(T) 為每個(gè)新的類型T分配一片內(nèi)存,初始化為 0 并且返回類型為
T的內(nèi)存地址:這種方法 返回一個(gè)指向類型為 T,值為 0 的地址的指針,它適用于值類型如數(shù)組和結(jié)構(gòu)體;它相當(dāng)于 &T{}。
make(T) 返回一個(gè)類型為 T 的初始值,它只適用于3種內(nèi)建的引用類型:slice、map 和 channel。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,655評(píng)論 1 51
  • 轉(zhuǎn)載自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay閱讀 6,473評(píng)論 1 5
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,619評(píng)論 1 32
  • 心血來潮去吃轉(zhuǎn)轉(zhuǎn)鍋,因?yàn)楹軔圩萄a(bǔ)湯里甜甜的味道,所以就點(diǎn)了這樣的湯底。 我的目的其實(shí)是來喝湯的 但是,當(dāng)正吃的濃時(shí)...
    陶一一閱讀 506評(píng)論 0 0
  • 風(fēng)吹著, 雪飄著, 落在我的發(fā)梢輕輕, 染白了我的青絲徐徐, 恰似你的溫柔, 慢慢包圍我的小城。 水流著, 葉飄著...
    瞉瞉閱讀 245評(píng)論 0 0

友情鏈接更多精彩內(nèi)容