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

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

Go 中的結(jié)構(gòu)集

Go 中的結(jié)構(gòu)集

Go
湖上湖 2021-12-07 10:25:08
如果我有許多要存儲(chǔ)的結(jié)構(gòu):type Stuff struct {    a string    b string}我可以用切片來做到這一點(diǎn),但似乎使用正確的集合結(jié)構(gòu)會(huì)使用更少的內(nèi)存。不幸的是,Go 沒有固定的結(jié)構(gòu)。每個(gè)人都建議使用,map[Stuff]struct{}但這不起作用,因?yàn)樗黃tuff是一個(gè)結(jié)構(gòu)體。大家有什么好的解決辦法嗎?理想情況下無需下載庫(kù)。
查看完整描述

1 回答

?
繁星coding

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

通常 set 和 map 數(shù)據(jù)結(jié)構(gòu)需要比在普通數(shù)組或切片中存儲(chǔ)值列表更多的內(nèi)存,因?yàn)?set 和 map 提供了有效的附加功能,如唯一性或通過鍵檢索值。

如果您想要最少的內(nèi)存使用量,只需將它們存儲(chǔ)在一個(gè)切片中,例如[]Stuff. 如果您在多個(gè)位置使用這些值,那么僅存儲(chǔ)它們的指針也可能是有利可圖的,例如[]*Stuff,因此每個(gè)存儲(chǔ)相同Stuff值的位置都可以存儲(chǔ)相同的指針(無需復(fù)制該值)。

如果您只想存儲(chǔ)唯一的結(jié)構(gòu)值,那么集合確實(shí)是最方便的選擇,在 Go 中使用map.

沒有任何問題map[Stuff]struct{},它有效。對(duì)地圖鍵類型要求

比較操作符==和=必須為鍵類型的操作數(shù)被完全定義!; 因此鍵類型不能是函數(shù)、映射或切片。

Stuff是一個(gè)結(jié)構(gòu)體,如果滿足以下條件,Go 中的結(jié)構(gòu)體是可比的

如果所有字段都具有可比性,則結(jié)構(gòu)值具有可比性。如果它們對(duì)應(yīng)的非空白字段相等,則兩個(gè)結(jié)構(gòu)值相等。

如果您的Stuff結(jié)構(gòu)是您發(fā)布的內(nèi)容,則它是可比較的:它僅包含可比較類型的字段string。

另請(qǐng)注意,如果您想要一個(gè)集合數(shù)據(jù)結(jié)構(gòu),如果您使用bool作為值類型(例如map[Stuff]bool)和true作為值,則更清楚,然后您可以簡(jiǎn)單地使用索引來測(cè)試值是否在地圖中,因?yàn)樗饕磉_(dá)式產(chǎn)生如果鍵(在您的情況下)不在地圖中,則值類型(falsefor bool)的零值Stuff,正確地告訴您要查找的值不在“集合”中。(如果它在地圖中,它的關(guān)聯(lián)true值是索引表達(dá)式的結(jié)果 - 正確地告訴它在地圖中)。


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

添加回答

舉報(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)