首頁 >後端開發 >Golang >如何在 Go 中將 2D 切片展平為 1D 切片?

如何在 Go 中將 2D 切片展平為 1D 切片?

DDD
DDD原創
2024-12-03 21:34:16709瀏覽

How to Flatten a 2D Slice into a 1D Slice in Go?

在Go 中將2D 切片展平為1D 切片

在Go 中,目前沒有原生函數允許將2D 切片展平為1D 切片。透過一次操作即可將 2D 切片轉換為 1D 切片。但是,有幾種簡單且明確的方法可以實現此目的。

一種方法是使用循環迭代 2D 切片的每個元素並將其附加到 1D 切片:

var newArr []int32
for _, a := range arr {
  newArr = append(newArr, a...)
}

這個方法清晰簡潔,易於理解和實現。

另一種選擇是利用內建的append()函數來連接將多個切片合併為一個切片:

newArr := append([]int32{}, arr...)

這種方法直接將整個2D 切片附加到1D 切片上,提供了稍微更簡潔的解決方案。

最後,如果2D 切片包含切片長度相等,可以使用切片和copy() 函數來建立一維slice:

length := len(arr[0])
newArr := make([]int32, len(arr) * length)
for i, a := range arr {
  copy(newArr[i * length:], a)
}

此方法更複雜,但在某些情況下可能更有效。

雖然 Go 缺乏專門的壓平切片的函數,但這些解決方法為轉換提供了簡單高效的解決方案2D 切片為 1D 切片。

以上是如何在 Go 中將 2D 切片展平為 1D 切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn