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

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

Go(語言)從切片中獲取數組

Go(語言)從切片中獲取數組

Go
瀟瀟雨雨 2021-06-23 02:09:29
如果我用(例如)創建一個切片mySlice := make([]int, 5, 10)然后我假設一個類型的數組[10]int是靜默創建的,并且我收到一個“看到”前 5 個整數的切片。(對嗎?Go 文檔并沒有用這種方式表達它,但是由于切片必須始終在某處有一個底層數組,我不知道它怎么可能是其他方式。)所以我相信以上是簡寫:var myArray [10]int mySlice := myArray[0:5]但是當我使用第一種方法時,我沒有數組的句柄。有沒有辦法從切片中獲取它?
查看完整描述

2 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

如果不使用不安全的指針技巧,就無法從切片中獲取數組。


查看完整回答
反對 回復 2021-06-28
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

我不確定你想要什么樣的“句柄”,但數組在 Go 中是按值傳遞的。因此,如果您有一個將數組作為參數的函數,則只需將切片中的數據復制到數組中,然后傳遞數組即可。當您將數組傳遞給函數時,無論如何都會復制該數組。

如果您自己的代碼想要處理數組,那么它可以對切片執行所有操作,就像處理數組一樣。

沒有 unsafe 你唯一不能做的就是創建一個指向數組的指針——但你可以用 unsafe 輕松做到這一點:

arrayPtr := (*[10]int)(unsafe.Pointer(&mySlice[0]))


查看完整回答
反對 回復 2021-06-28
  • 2 回答
  • 0 關注
  • 298 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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