亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

結構切片與指向結構的指針切片

結構切片與指向結構的指針切片

Go
慕碼人8056858 2021-09-10 15:11:47
我經常使用結構片。這是此類結構的示例:type MyStruct struct {     val1, val2, val3    int     text1, text2, text3 string     list                []SomeType}所以我定義我的切片如下:[]MyStruct假設我有大約一百萬個元素,并且我正在大量使用切片:我經常添加新元素。(元素總數未知。)我時不時地整理一下。我還刪除了元素(雖然沒有添加新元素那么多)。我經常閱讀元素并將它們傳遞(作為函數參數)。元素本身的內容不會改變。我的理解是,這會導致對實際結構的大量改組。另一種方法是創建一個指向結構的指針:[]*MyStruct現在結構體保持原樣,我們只處理我認為占用空間較小的指針,因此會使我的操作更快。但是現在我給垃圾收集器做更多的工作。你能提供什么時候直接使用結構體還是什么時候使用指向結構體的指針的一般指南嗎?我是否應該擔心留給 GC 的工作量是多少?復制結構與復制指針的性能開銷可以忽略不計?也許一百萬個元素并不多。當切片變得更大(但仍然適合 RAM,當然)時,所有這些如何變化?
查看完整描述

3 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

與映射、切片、通道、函數和方法不同,結構變量通過復制傳遞,這意味著在場景后面分配了更多內存。另一方面,減少指針會減少垃圾收集器的工作。從我的角度來看,我會更多地考慮 3 件事:結構復雜性、要處理的數據量以及創建 var 后的功能需求(當它被傳遞到函數時是否需要可變?等等..)


查看完整回答
反對 回復 2021-09-10
  • 3 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號