go語言make的用法 go中的make

Go語言中new和 make的區別詳解

1、new 的主要特性

創新互聯致力于互聯網品牌建設與網絡營銷,包括做網站、網站制作、SEO優化、網絡推廣、整站優化營銷策劃推廣、電子商務、移動互聯網營銷等。創新互聯為不同類型的客戶提供良好的互聯網應用定制及解決方案,創新互聯核心團隊10年專注互聯網開發,積累了豐富的網站經驗,為廣大企業客戶提供一站式企業網站建設服務,在網站建設行業內樹立了良好口碑。

首先 new 是內建函數,定義也很簡單:

func new(Type) *Type

內建函數 new 用來分配內存,第一個參數是一個類型,不是一個值,返回值是一個指向新分配類型零值的指針

實現一個類似 new 的功能:

func newInt() *int {

var i int

return i

}

someInt := newInt()

函數的功能跟 someInt := new(int) 一模一樣。定義 new 開頭的函數時,出于約定也應該返回類型的指針。

2、make 的主要特性

make 也是內建函數,定義比 new 多了一個參數,返回值也不同:

func make(Type, size IntegerType) Type

內建函數 make 用來為 slice,map 或 chan 類型分配內存和初始化一個對象(注意:只能用在這三種類型上),跟 new 類似,第一個參數也是一個類型而不是一個值,跟 new 不同的是,make 返回類型的引用而不是指針,而返回值也依賴于具體傳入的類型,具體說明如下:

Slice: 第二個參數 size 指定了長度,容量和長度相同。

可以傳入第三個參數來指定不同的容量值,但必須不能比長度值小。

比如 make([]int, 0, 10)

Map: 根據 size 大小來初始化分配內存,不過分配后的 map 長度為 0,如果 size 被忽略了,那么會在初始化分配內存時分配一個小尺寸的內存

Channel: 管道緩沖區依據緩沖區容量被初始化。如果容量為 0 或者忽略容量,管道沒有緩沖區。

3、總結

new 的作用是初始化一個指向類型的指針(*T),make 的作用是為 slice,map 或 chan 初始化并返回引用(T)。

make的用法

make的用法如下:

1、make+賓語+不帶to的不定式(作賓語補足語)。

如:Nobody made us go to bed at a certain time.

沒有人讓我們在某一固定時間就寢。

2、make+形容詞(短語)+名詞短語時,是一種倒裝結構。為使句子結構保持平衡,通常將較長的名詞短語移置補足語之后,不加引導詞匯作形式賓語。

如:The telescope made possible the observation of the far-off stars.

望遠鏡使人們能夠觀察遙遠的星球。

3、make +賓語+名詞(作賓語補足語)。

如:Bill Gates’ Microsoft makes him a phenomenon in the business world.

比爾·蓋茨的微軟使他成為商界的一個奇才。

4、make +賓語+形容詞(作賓語補足語)。

如:Unfortunately, this function also makes estuaries very sensitive to enviro-mental pollution.

不幸的是,這個作用也使河口對環境污染很敏感。

go語言循環隊列的實現

隊列的概念在 順序隊列 中,而使用循環隊列的目的主要是規避假溢出造成的空間浪費,在使用循環隊列處理假溢出時,主要有三種解決方案

本文提供后兩種解決方案。

順序隊和循環隊列是一種特殊的線性表,與順序棧類似,都是使用一組地址連續的存儲單元依次存放自隊頭到隊尾的數據元素,同時附設隊頭(front)和隊尾(rear)兩個指針,但我們要明白一點,這個指針并不是指針變量,而是用來表示數組當中元素下標的位置。

本文使用切片來完成的循環隊列,由于一開始使用三個參數的make關鍵字創建切片,在輸出的結果中不包含nil值(看起來很舒服),而且在驗證的過程中發現使用append()函數時切片內置的cap會發生變化,在消除了種種障礙后得到了一個四不像的循環隊列,即設置的指針是順序隊列的指針,但實際上進行的操作是順序隊列的操作。最后是對make()函數和append()函數的一些使用體驗和小結,隊列的應用放在鏈隊好了。

官方描述(片段)

即切片是一個抽象層,底層是對數組的引用。

當我們使用

構建出來的切片的每個位置的值都被賦為interface類型的初始值nil,但是nil值也是有大小的。

而使用

來進行初始化時,雖然生成的切片中不包含nil值,但是無法通過設置的指針變量來完成入隊和出隊的操作,只能使用append()函數來進行操作

在go語言中,切片是一片連續的內存空間加上長度與容量的標識,比數組更為常用。使用 append 關鍵字向切片中追加元素也是常見的切片操作

正是基于此,在使用go語言完成循環隊列時,首先想到的就是使用make(type, len, cap)關鍵字方式完成切片初始化,然后使用append()函數來操作該切片,但這一方式出現了很多問題。在使用append()函數時,切片的cap可能會發生變化,用不好就會發生擴容或收縮。最終造成的結果是一個四不像的結果,入隊和出隊操作變得與指針變量無關,失去了作為循環隊列的意義,用在順序隊列還算合適。

參考博客:

Go語言中的Nil

Golang之nil

Go 語言設計與實現

make的七種用法

1、make語+名詞。2、make賓語+動詞原形。3、make賓語+形容詞。4、make賓語+過去分詞(作賓語補足語)。5、make語+介詞短語(作賓語補足語)。6、make賓語+從句(作賓語補足語)。7、make形式賓語i形容詞或名詞(做賓語補足語)+帶to的不定式作真正的賓語。 擴展資料 1、make語+名詞(作賓語補足語)。Most pop singers make music their career。大多數流行歌手把音樂當作他們的職業。2、make賓語+動詞原形(作賓語語補足語)。Nobody made us go to bed at a certain time沒有人讓我們在某一固定時間就寢。3、make賓語+形容詞(作賓語補足語)。But I was happy to help because i knew it was to realize our dreamf making black and white people equal但是我樂于幫忙,因為我知道,這是為了實現我們黑人和白人平等的夢想。4、make賓語+過去分詞(作賓語補足語)。The teacher raised his voice so that he could make himself heard那個老師提高了嗓門以便別人能聽到他。5、make語+介詞短語(作賓語補足語)。You made him into an honest one你使他成為一個誠實的'人。6、make賓語+從句(作賓語補足語)。We will soon make our school what your school is now我們不久就要把我們的學校發展成你們學校目前的那個樣子。7、make形式賓語i形容詞或名詞(做賓語補足語)+帶to的不定式作真正的賓語。This makes it possible for agriculture and industry to develo這使工農業有可能很快發展。

當前題目:go語言make的用法 go中的make
文章轉載:http://m.kartarina.com/article18/dogicgp.html

成都網站建設公司_創新互聯,為您提供靜態網站網站制作外貿網站建設全網營銷推廣網站設計動態網站

廣告

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

外貿網站制作
主站蜘蛛池模板: 亚洲a∨无码一区二区| 国产产无码乱码精品久久鸭| 毛片免费全部播放无码| 白嫩少妇激情无码| 国产成人综合日韩精品无码| 无码国产伦一区二区三区视频| 亚洲av中文无码字幕色不卡| 2014AV天堂无码一区| 无码人妻丰满熟妇区BBBBXXXX | 无码囯产精品一区二区免费| 无码丰满熟妇一区二区| 国产爆乳无码视频在线观看| 国产av无码久久精品| 毛片免费全部播放无码| 亚洲日韩精品无码专区网址 | 亚洲AⅤ无码一区二区三区在线| 亚洲AV无码日韩AV无码导航| 国产精品一级毛片无码视频| 无码免费午夜福利片在线| 人妻无码αv中文字幕久久| 人妻丰满熟妇aⅴ无码| 国产精品无码免费播放| 永久免费av无码不卡在线观看| 亚洲精品无码国产| 亚洲精品无码专区久久同性男| 亚洲av无码成人影院一区| 久久亚洲日韩看片无码| 日韩免费无码视频一区二区三区| 亚洲一级Av无码毛片久久精品| 国产成人无码A区在线观看导航| 中文无码精品A∨在线观看不卡| 日韩精品无码一区二区三区免费| 久久午夜夜伦鲁鲁片免费无码 | 亚洲国产AV无码专区亚洲AV | 精品视频无码一区二区三区| 无码乱人伦一区二区亚洲| 无码人妻AV一二区二区三区| 久久久久久久无码高潮| 熟妇无码乱子成人精品| 亚洲av无码电影网| 亚洲6080yy久久无码产自国产|