最近對(duì)golang中new和make函數(shù)感到很困惑,為什么golang中有這么兩個(gè)函數(shù)同時(shí)都可以聲明變量?
下面是上網(wǎng)翻資料查到的一些這兩個(gè)函數(shù)的異同,希望能幫到同樣有疑惑的朋友。
- new和make都不是go的關(guān)鍵字,而是go預(yù)定義的函數(shù)。這意味著我們可以將new或者make重新定義為其他類(lèi)型。比如:
func delta(new, make int) int { return make - new }
-
make返回一個(gè)變量而new返回一個(gè)變量的指針。go中new和make的定義如下:
image.png 只有make能做的操作:
a.創(chuàng)建一個(gè)chan
b.創(chuàng)建一個(gè)內(nèi)存預(yù)分配的map
c.創(chuàng)建一個(gè)內(nèi)存預(yù)分配的slice,并且slice的len可以不等于cap
本文作者: 王炎杰
本文鏈接: http://www.itdecent.cn/p/61cd952f322b
版權(quán)聲明: 轉(zhuǎn)載請(qǐng)注明出處!
