2017-07-25 59 views
1

這裏有兩個數據結構如何在GO中將二維數組轉換爲一維數組?

result []byte 
chunk [][]byte 

「塊」 如下

chunk := make([][]byte, 3) 
for i := 0 ; i < 5; i++ { 
     chunk[i] = data //data is a byte array 
} 

我如何可以連接到chunksresult[]初始化?

如果塊是"123", "456", "789",那麼結果應該是"123456789"

回答

3

可以使用"bytes".Join函數從標準庫:

result := bytes.Join(chunks, nil) 

第一個參數是您的切片([][]byte)的片,第二個參數是分離器(又名膠)。在你的情況下,分隔符是一個空字節片段(nil也適用)。

在操場上:https://play.golang.org/p/8pquRk7PDo

3

簡單。

l := 0 
for _, v := range chunks { 
    l += len(v) 
} 
result := make([]byte, 0, l) 
for _, v := range chunks { 
    result = append(result, v...) 
} 

第一循環加起來所有的長度,新的片分配,然後又是循環使用的舊片複製到新的一個。

儘管使用bytes軟件包中的函數可以更簡單地處理這種特殊情況,但此解決方案可以處理任何類型的切片。

+0

無需手動執行此操作,標準庫中的''bytes「.Join'函數對於這項工作來說是完美的。 – yazgazan

+0

夠正確。一般來說,當我做這樣的事情時,它是更大的事情的一部分,或者類型不是'字節',所以便利的助手不是有用的......所以我有點忘記它存在...我會編輯我的答案指出這是通用解決方案。 –

相關問題