第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Golang 中 make(map[type1]type2) 的內(nèi)部實(shí)現(xiàn)是什么?

Golang 中 make(map[type1]type2) 的內(nèi)部實(shí)現(xiàn)是什么?

Go
慕沐林林 2023-07-31 15:53:46
Golang 是一種原生編程語(yǔ)言。所以比動(dòng)態(tài)語(yǔ)言(如 python 和 ruby)有很多限制。當(dāng)將 Maps 初始化為 時(shí)m := make(Map[string]int),該映射m似乎能夠包含無(wú)窮多個(gè)鍵值。但是,當(dāng)使用地圖文字或使用 cap 初始化地圖時(shí),地圖不能包含無(wú)窮多個(gè)鍵值。有文章說(shuō),沒(méi)有上限的 make 會(huì)為此映射分配大量?jī)?nèi)存。但這不是選項(xiàng),因?yàn)槿绻@是真的,那么初始化單個(gè)映射時(shí)將會(huì)消耗巨大的內(nèi)存。但無(wú)論我使用什么計(jì)算機(jī)硬件監(jiān)控工具,我的程序運(yùn)行之前和期間的內(nèi)存沒(méi)有任何區(qū)別。func main(){? ? Hello()}func Hello(){? ? m := make(SizeRecord)? ? l := 10000000? ? for i := 0; i < l; i++ {? ? ? ? m[strconv.Itoa(i)] = Size{float64(rand.Intn(100)), float64(rand.Intn(100)), float64(rand.Intn(100))}? ? }? ? fmt.Println(m)}該程序需要一段時(shí)間才能執(zhí)行。在沒(méi)有上限的情況下使用替代實(shí)現(xiàn)來(lái)表示地圖,并使用統(tǒng)一的接口來(lái)訪問(wèn)地圖,就像其他具有有限功能的地圖一樣容量。如果我的理解是錯(cuò)誤的,有人可以告訴我什么是正確的嗎?如果我是對(duì)的,為什么 golang 不以這種方式實(shí)現(xiàn)所有映射?
查看完整描述

1 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

您對(duì)地圖工作原理的理解不正確。規(guī)范說(shuō):

Blockquote 初始容量不限制其大?。河成鋾?huì)增長(zhǎng)以容納其中存儲(chǔ)的項(xiàng)目數(shù)量,但 nil 映射除外。nil 映射相當(dāng)于空映射,只不過(guò)不能添加任何元素。

因此,容量只是一個(gè)提示,它會(huì)影響地圖的初始大小。地圖可以根據(jù)需要增長(zhǎng)。對(duì)于給定容量的地圖沒(méi)有單獨(dú)的實(shí)現(xiàn)。



查看完整回答
反對(duì) 回復(fù) 2023-07-31
  • 1 回答
  • 0 關(guān)注
  • 221 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)