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

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

go語言中make函數(shù),golang make函數(shù)

go語言make函數(shù)參數(shù)為什么說返回的是一個(gè)非零值

要判斷數(shù)據(jù)類型用Go空接口: 建函數(shù)t 設(shè)置參數(shù)i 類型空接口空接口接受任何數(shù)據(jù)類型 func t(i interface{}) { //函數(shù)t 參數(shù)i switch i.(type) { //選語句switch case string: //字符做事情 case int: //整...

梅河口網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

Go語言中new和 make的區(qū)別詳解

new 主要用于結(jié)構(gòu)體的初始化

make用于數(shù)組array,切片slice,協(xié)程chnnel的初始化

例如: users:=make([10]int);

msg:=make(chan int);

new會分配結(jié)構(gòu)空間,并初始化為清空為零,不進(jìn)一步初始化

new之后需要一個(gè)指針來指向這個(gè)結(jié)構(gòu)

make會分配結(jié)構(gòu)空間及其附屬空間,并完成其間的指針初始化

make返回這個(gè)結(jié)構(gòu)空間,不另外分配一個(gè)指針

例子new:

var p *[]int = new([]int)

p := new([]int)

以上分配了一個(gè)slice結(jié)構(gòu),但是結(jié)構(gòu)中的應(yīng)該指向底層數(shù)組的ptr指針為空,故實(shí)際不能往這個(gè)slice里面存取數(shù)據(jù)

同時(shí)分配了一個(gè)指針p,也即(在32位系統(tǒng)中)占4個(gè)字節(jié)并存放slice結(jié)構(gòu)的地址

例子make:

var v []int = make([]int, 0)

v := make([]int, 0)

以上分配了一個(gè)slice結(jié)構(gòu),且結(jié)構(gòu)中的應(yīng)該指向底層數(shù)組的ptr指針已經(jīng)指向了某個(gè)底層數(shù)組,這個(gè)底層數(shù)組應(yīng)該已經(jīng)分配了,故這個(gè)slice已經(jīng)可以使用了

注意v就是這個(gè)slice結(jié)構(gòu),而不是一個(gè)指向slice的指針

上述僅是示例,一般使用時(shí)都會明確長度和容量:v := make([]int, 10, 50)

結(jié)論:

由上可見,用new來分配slice的意義不大,因?yàn)闆]有恰當(dāng)?shù)某跏蓟?,無法直接使用

有附帶空間的結(jié)構(gòu),使用make來初始化,可以完成內(nèi)部指針初始化,其后可以立即使用

Golang中new和make的區(qū)別

new是內(nèi)建函數(shù),作用是初始化一個(gè)指向類型的指針,make的作用是slice,map或chan初始化并返回引用,第一個(gè)參數(shù)是一個(gè)類型,第二個(gè)參數(shù)是長度。


名稱欄目:go語言中make函數(shù),golang make函數(shù)
本文鏈接:http://weahome.cn/article/dschsge.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部