首頁 >後端開發 >Golang >如何在 Go 中將多維切片展平為一維切片?

如何在 Go 中將多維切片展平為一維切片?

Patricia Arquette
Patricia Arquette原創
2024-12-09 07:22:08274瀏覽

How to Flatten Multidimensional Slices into One-Dimensional Slices in Go?

Go 中多維切片轉換為一維切片

在程式設計中,經常需要將多維切片轉換為一維切片各種原因。然而,Go 並沒有提供執行此操作的直接函數。

來自預定2D 切片的1D 切片

對於已知的靜態2D 切片,一個簡單的循環可以有效地將其展平為一維切片:

var arr2d = [][]int32{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
var arr1d []int32
for _, a := range arr2d {
    arr1d = append(arr1d, a...)
}

此方法迭代中的每個元素2D 切片並將它們累積到1D 切片arr1d中,結果是:

arr1d = [1, 2, 3, 4, 5, 6, 7, 8, 9]

未知維度的通用扁平化

對於 2D 切片的維度為的情況未知或動態,需要更穩健的方法。雖然Go 缺乏通用扁平化的內建函數,但有幾個軟體包提供了此功能:

  • arrayutils: https://pkg.go.dev/github. com/icza /arrayutils#FlattenSlice
  • 平: https://pkg.go.dev/github.com/srika403/flat#ExtSliceChain

這些套件提供了將任意深度的多維切片遞歸展平為單維切片的函數。

結論

雖然Go沒有提供用於展平多維切片的內建方法,使用循環或外部包存在有效的解決方案。了解這些方法可以為各種程式設計場景高效轉換複雜的資料結構。

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

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