欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

go語言new和make go語言新特性

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

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

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

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ù)某跏蓟瑹o法直接使用

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

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

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

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

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

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

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

網(wǎng)站欄目:go語言new和make go語言新特性
網(wǎng)頁URL:http://chinadenli.net/article24/doophje.html

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

廣告

聲明:本網(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è)計公司