真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言中make和new的區(qū)別是什么

make、new

創(chuàng)新互聯(lián)是專業(yè)的寧德網(wǎng)站建設(shè)公司,寧德接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行寧德網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

make用于內(nèi)建類型(map、slice 和channel)的內(nèi)存分配,golang分配內(nèi)存有一個make函數(shù),該函數(shù)第一個參數(shù)是類型,第二個參數(shù)是分配的空間,第三個參數(shù)是預(yù)留分配空間。

new用于各種類型的內(nèi)存分配。new(T) 為一個 T 類型新值分配空間并將此空間初始化為 T 的零值,返回的是新值的地址,也就是 T 類型的指針 *T,該指針指向 T 的新分配的零值。

內(nèi)建函數(shù)new本質(zhì)上說跟其它語言中的同名函數(shù)功能一樣:new(T)分配了零值填充的T類型的內(nèi)存空間,并且返回其地址,即一個*T類型的值。

用Go的術(shù)語說,它返回了一個指針,指向新分配的類型T的零值。有一點非常重要:

new返回指針。

內(nèi)建函數(shù)make(T, args)與new(T)有著不同的功能,make只能創(chuàng)建slice、map和channel,并且返回一個有初始值(非零)的T類型,而不是*T。本質(zhì)來講,導(dǎo)致這三個類型有所不同的原因是指向數(shù)據(jù)結(jié)構(gòu)的引用在使用前必須被初始化。

例如,一個slice,是一個包含指向數(shù)據(jù)(內(nèi)部array)的指針、長度和容量的三項描述符;在這些項目被初始化之前,slice為nil。對于slice、map和channel來說,make初始化了內(nèi)部的數(shù)據(jù)結(jié)構(gòu),填充適當(dāng)?shù)闹怠?/p>

make返回初始化后的(非零)值。

代碼示例:

var map1 map[string]string = make(map[string]string)
    fmt.Println(map1)
    fmt.Println(map1 == nil)

    var map2 *map[string]string = new(map[string]string)
    fmt.Println(map2)
    fmt.Println(map2 == nil)
    fmt.Println(*map2)
    fmt.Println(*map2 == nil)
    //    var map1 map[string]string
    map1["aaa"] = "AAA"
    map1["bbb"] = "BBB"
    map1["ccc"] = "CCC"
    fmt.Println(map1)
    fmt.Println(len(map1))

輸出:

map[]
false
&map[]
false
map[]
true
map[bbb:BBB ccc:CCC aaa:AAA]
Success: process exited with code 0.

以上就是golang make和new區(qū)別的詳細內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!


網(wǎng)站名稱:go語言中make和new的區(qū)別是什么
文章轉(zhuǎn)載:http://weahome.cn/article/pcsdss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部