如果我創建具有(例如)獲取在Go(語言)從片陣列
mySlice := make([]int, 5, 10)
切片然後我想[10]int
類型的陣列默默地創建的,並且收到一個切片時「看到」前5個整數。
(右?轉到文檔不太句話這樣說,但是由於片必須始終有一個基本數組的地方,我看不出它如何能是任何其他方式。)
所以我相信以上是速記:
var myArray [10]int
mySlice := myArray[0:5]
但是,當我使用第一種方法,我沒有數組的句柄。有沒有辦法從切片中獲得它?
OK,所以[10] int數組* *是當我使用make([] int,5,10)創建時,我無法實現它。正確?因此,如果我確實需要某個地方的底層數組的句柄,那麼顯式創建數組然後切片的「長形式」方法將是唯一的方法? –
「長形」允許保持底層數組的實例可達。必須小心不要使用'append'和slice-derived-from-array,因爲slice和它的「原始」支持數組之間的「連接」會中斷。我不知道你想要做什麼,但是如果你試圖解決這個問題,可能會出現這種情況。我不記得以前使用或討論過的類似方法。 – zzzz
我只是想完全理解Go的數組和切片,來自C/C++/D背景。你提到可能會破壞切片和原始切片之間的連接。這聽起來像D一樣的行爲,我希望Go沒有這個問題。我猜如果超過原始片的容量(這是原始數組的* length *),'append'將靜靜地創建一個新的底層數組? –