1、new 的主要特性
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷(xiāo),包括做網(wǎng)站、網(wǎng)站制作、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營(yíng)銷(xiāo)策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營(yíng)銷(xiāo)等。創(chuàng)新互聯(lián)為不同類(lèi)型的客戶(hù)提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)核心團(tuán)隊(duì)10年專(zhuān)注互聯(lián)網(wǎng)開(kāi)發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶(hù)提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹(shù)立了良好口碑。
首先 new 是內(nèi)建函數(shù),定義也很簡(jiǎn)單:
func new(Type) *Type
內(nèi)建函數(shù) new 用來(lái)分配內(nèi)存,第一個(gè)參數(shù)是一個(gè)類(lèi)型,不是一個(gè)值,返回值是一個(gè)指向新分配類(lèi)型零值的指針
實(shí)現(xiàn)一個(gè)類(lèi)似 new 的功能:
func newInt() *int {
var i int
return i
}
someInt := newInt()
函數(shù)的功能跟 someInt := new(int) 一模一樣。定義 new 開(kāi)頭的函數(shù)時(shí),出于約定也應(yīng)該返回類(lèi)型的指針。
2、make 的主要特性
make 也是內(nèi)建函數(shù),定義比 new 多了一個(gè)參數(shù),返回值也不同:
func make(Type, size IntegerType) Type
內(nèi)建函數(shù) make 用來(lái)為 slice,map 或 chan 類(lèi)型分配內(nèi)存和初始化一個(gè)對(duì)象(注意:只能用在這三種類(lèi)型上),跟 new 類(lèi)似,第一個(gè)參數(shù)也是一個(gè)類(lèi)型而不是一個(gè)值,跟 new 不同的是,make 返回類(lèi)型的引用而不是指針,而返回值也依賴(lài)于具體傳入的類(lèi)型,具體說(shuō)明如下:
Slice: 第二個(gè)參數(shù) size 指定了長(zhǎng)度,容量和長(zhǎng)度相同。
可以傳入第三個(gè)參數(shù)來(lái)指定不同的容量值,但必須不能比長(zhǎng)度值小。
比如 make([]int, 0, 10)
Map: 根據(jù) size 大小來(lái)初始化分配內(nèi)存,不過(guò)分配后的 map 長(zhǎng)度為 0,如果 size 被忽略了,那么會(huì)在初始化分配內(nèi)存時(shí)分配一個(gè)小尺寸的內(nèi)存
Channel: 管道緩沖區(qū)依據(jù)緩沖區(qū)容量被初始化。如果容量為 0 或者忽略容量,管道沒(méi)有緩沖區(qū)。
3、總結(jié)
new 的作用是初始化一個(gè)指向類(lèi)型的指針(*T),make 的作用是為 slice,map 或 chan 初始化并返回引用(T)。
make的用法如下:
1、make+賓語(yǔ)+不帶to的不定式(作賓語(yǔ)補(bǔ)足語(yǔ))。
如:Nobody made us go to bed at a certain time.
沒(méi)有人讓我們?cè)谀骋还潭〞r(shí)間就寢。
2、make+形容詞(短語(yǔ))+名詞短語(yǔ)時(shí),是一種倒裝結(jié)構(gòu)。為使句子結(jié)構(gòu)保持平衡,通常將較長(zhǎng)的名詞短語(yǔ)移置補(bǔ)足語(yǔ)之后,不加引導(dǎo)詞匯作形式賓語(yǔ)。
如:The telescope made possible the observation of the far-off stars.
望遠(yuǎn)鏡使人們能夠觀(guān)察遙遠(yuǎn)的星球。
3、make +賓語(yǔ)+名詞(作賓語(yǔ)補(bǔ)足語(yǔ))。
如:Bill Gates’ Microsoft makes him a phenomenon in the business world.
比爾·蓋茨的微軟使他成為商界的一個(gè)奇才。
4、make +賓語(yǔ)+形容詞(作賓語(yǔ)補(bǔ)足語(yǔ))。
如:Unfortunately, this function also makes estuaries very sensitive to enviro-mental pollution.
不幸的是,這個(gè)作用也使河口對(duì)環(huán)境污染很敏感。
隊(duì)列的概念在 順序隊(duì)列 中,而使用循環(huán)隊(duì)列的目的主要是規(guī)避假溢出造成的空間浪費(fèi),在使用循環(huán)隊(duì)列處理假溢出時(shí),主要有三種解決方案
本文提供后兩種解決方案。
順序隊(duì)和循環(huán)隊(duì)列是一種特殊的線(xiàn)性表,與順序棧類(lèi)似,都是使用一組地址連續(xù)的存儲(chǔ)單元依次存放自隊(duì)頭到隊(duì)尾的數(shù)據(jù)元素,同時(shí)附設(shè)隊(duì)頭(front)和隊(duì)尾(rear)兩個(gè)指針,但我們要明白一點(diǎn),這個(gè)指針并不是指針變量,而是用來(lái)表示數(shù)組當(dāng)中元素下標(biāo)的位置。
本文使用切片來(lái)完成的循環(huán)隊(duì)列,由于一開(kāi)始使用三個(gè)參數(shù)的make關(guān)鍵字創(chuàng)建切片,在輸出的結(jié)果中不包含nil值(看起來(lái)很舒服),而且在驗(yàn)證的過(guò)程中發(fā)現(xiàn)使用append()函數(shù)時(shí)切片內(nèi)置的cap會(huì)發(fā)生變化,在消除了種種障礙后得到了一個(gè)四不像的循環(huán)隊(duì)列,即設(shè)置的指針是順序隊(duì)列的指針,但實(shí)際上進(jìn)行的操作是順序隊(duì)列的操作。最后是對(duì)make()函數(shù)和append()函數(shù)的一些使用體驗(yàn)和小結(jié),隊(duì)列的應(yīng)用放在鏈隊(duì)好了。
官方描述(片段)
即切片是一個(gè)抽象層,底層是對(duì)數(shù)組的引用。
當(dāng)我們使用
構(gòu)建出來(lái)的切片的每個(gè)位置的值都被賦為interface類(lèi)型的初始值nil,但是nil值也是有大小的。
而使用
來(lái)進(jìn)行初始化時(shí),雖然生成的切片中不包含nil值,但是無(wú)法通過(guò)設(shè)置的指針變量來(lái)完成入隊(duì)和出隊(duì)的操作,只能使用append()函數(shù)來(lái)進(jìn)行操作
在go語(yǔ)言中,切片是一片連續(xù)的內(nèi)存空間加上長(zhǎng)度與容量的標(biāo)識(shí),比數(shù)組更為常用。使用 append 關(guān)鍵字向切片中追加元素也是常見(jiàn)的切片操作
正是基于此,在使用go語(yǔ)言完成循環(huán)隊(duì)列時(shí),首先想到的就是使用make(type, len, cap)關(guān)鍵字方式完成切片初始化,然后使用append()函數(shù)來(lái)操作該切片,但這一方式出現(xiàn)了很多問(wèn)題。在使用append()函數(shù)時(shí),切片的cap可能會(huì)發(fā)生變化,用不好就會(huì)發(fā)生擴(kuò)容或收縮。最終造成的結(jié)果是一個(gè)四不像的結(jié)果,入隊(duì)和出隊(duì)操作變得與指針變量無(wú)關(guān),失去了作為循環(huán)隊(duì)列的意義,用在順序隊(duì)列還算合適。
參考博客:
Go語(yǔ)言中的Nil
Golang之nil
Go 語(yǔ)言設(shè)計(jì)與實(shí)現(xiàn)
1、make語(yǔ)+名詞。2、make賓語(yǔ)+動(dòng)詞原形。3、make賓語(yǔ)+形容詞。4、make賓語(yǔ)+過(guò)去分詞(作賓語(yǔ)補(bǔ)足語(yǔ))。5、make語(yǔ)+介詞短語(yǔ)(作賓語(yǔ)補(bǔ)足語(yǔ))。6、make賓語(yǔ)+從句(作賓語(yǔ)補(bǔ)足語(yǔ))。7、make形式賓語(yǔ)i形容詞或名詞(做賓語(yǔ)補(bǔ)足語(yǔ))+帶to的不定式作真正的賓語(yǔ)。 擴(kuò)展資料 1、make語(yǔ)+名詞(作賓語(yǔ)補(bǔ)足語(yǔ))。Most pop singers make music their career。大多數(shù)流行歌手把音樂(lè)當(dāng)作他們的職業(yè)。2、make賓語(yǔ)+動(dòng)詞原形(作賓語(yǔ)語(yǔ)補(bǔ)足語(yǔ))。Nobody made us go to bed at a certain time沒(méi)有人讓我們?cè)谀骋还潭〞r(shí)間就寢。3、make賓語(yǔ)+形容詞(作賓語(yǔ)補(bǔ)足語(yǔ))。But I was happy to help because i knew it was to realize our dreamf making black and white people equal但是我樂(lè)于幫忙,因?yàn)槲抑?這是為了實(shí)現(xiàn)我們黑人和白人平等的夢(mèng)想。4、make賓語(yǔ)+過(guò)去分詞(作賓語(yǔ)補(bǔ)足語(yǔ))。The teacher raised his voice so that he could make himself heard那個(gè)老師提高了嗓門(mén)以便別人能聽(tīng)到他。5、make語(yǔ)+介詞短語(yǔ)(作賓語(yǔ)補(bǔ)足語(yǔ))。You made him into an honest one你使他成為一個(gè)誠(chéng)實(shí)的'人。6、make賓語(yǔ)+從句(作賓語(yǔ)補(bǔ)足語(yǔ))。We will soon make our school what your school is now我們不久就要把我們的學(xué)校發(fā)展成你們學(xué)校目前的那個(gè)樣子。7、make形式賓語(yǔ)i形容詞或名詞(做賓語(yǔ)補(bǔ)足語(yǔ))+帶to的不定式作真正的賓語(yǔ)。This makes it possible for agriculture and industry to develo這使工農(nóng)業(yè)有可能很快發(fā)展。
當(dāng)前題目:go語(yǔ)言make的用法 go中的make
文章轉(zhuǎn)載:http://chinadenli.net/article18/dogicgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)