免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

go語言new函數(shù),go語言構(gòu)造函數(shù)

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

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

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬主機、營銷軟件、網(wǎng)站建設(shè)、金湖網(wǎng)站維護、網(wǎng)站推廣。

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之后需要一個指針來指向這個結(jié)構(gòu)

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

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

例子new:

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

p := new([]int)

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

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

例子make:

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

v := make([]int, 0)

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

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

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

結(jié)論:

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

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

golang 內(nèi)置函數(shù)new 和struct 初始化的區(qū)別

obj := new(StructName) ?初始化Struct中的所有屬性都是零值,返回的是Struct指針,效果與StructName{}一致。

obj :=?StructName{Prop1:xx, Prop2:yy,...} ,?初始化Struct中的所有屬性,同時對指定屬性賦值,返回的是Struct值對象,作為參數(shù)傳遞時,其屬性不會被修改。

obj := StructName{Prop1:xx, Prop2:yy,...} 同上,返回的是Struct值對象的指針,作為參數(shù)傳遞時,其屬性可以被修改。

后面兩種使用方法更加靈活。

網(wǎng)站標(biāo)題:go語言new函數(shù),go語言構(gòu)造函數(shù)
文章鏈接:http://m.newbst.com/article42/dssedhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、虛擬主機商城網(wǎng)站外貿(mào)建站、企業(yè)網(wǎng)站制作、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司