内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

go語(yǔ)言new和make go語(yǔ)言新特性

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

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

為柴桑等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及柴桑網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、柴桑網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

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

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

msg:=make(chan int);

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

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

make會(huì)分配結(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í)都會(huì)明確長(zhǎng)度和容量:v := make([]int, 10, 50)

結(jié)論:

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

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

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

·new:是一個(gè)用來(lái)分配內(nèi)存的內(nèi)置函數(shù),與C++不同的是,它不初始化內(nèi)存,只是將其歸零,也就相當(dāng)于,new(X)會(huì)為X的新項(xiàng)目分配被歸零的存儲(chǔ),且返回它的地址,其中,第一個(gè)參數(shù)是類型,返回值是類型的指針,其值被初始化為‘0’,對(duì)于不同的數(shù)據(jù)類型,0值的意義也是不一樣的,比如int初始化為0,bool初始化為false等等。

·make:是Golang的內(nèi)置函數(shù),僅用于分配和初始化slice、map及channel類型的對(duì)象,三種類型都是結(jié)構(gòu),返回值為類型而不是指針,例如slice是一個(gè)三元描述符,包含一個(gè)指向數(shù)據(jù)(在數(shù)組中)的指針,長(zhǎng)度以及容量,在這些項(xiàng)被初始化前,slice都是nil的,對(duì)于這三者,make初始化這些內(nèi)部數(shù)據(jù)結(jié)構(gòu),并準(zhǔn)備好可用的值。

需要注意的是,make只用于map、slice和channel,并且不反悔指針,想要獲得一個(gè)顯式的指針,使用new進(jìn)行分配,或者顯式地使用一個(gè)變量的地址。

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

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

網(wǎng)站欄目:go語(yǔ)言new和make go語(yǔ)言新特性
網(wǎng)頁(yè)URL:http://m.rwnh.cn/article24/doophje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司、App設(shè)計(jì)動(dòng)態(tài)網(wǎng)站

廣告

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

成都網(wǎng)頁(yè)設(shè)計(jì)公司
儋州市| 东兰县| 宿州市| 辽阳县| 连平县| 合川市| 大埔县| 罗城| 蒙城县| 漯河市| 宁蒗| 彰化县| 万州区| 承德县| 兰溪市| 贵阳市| 新密市| 北宁市| 石台县| 龙门县| 德格县| 城市| 清水河县| 莱芜市| 徐汇区| 沛县| 蒙城县| 马鞍山市| 双峰县| 九寨沟县| 甘谷县| 嘉义县| 通河县| 化德县| 澄迈县| 遂平县| 通许县| 清水河县| 荔波县| 榆树市| 海丰县|