Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Meratakan Kepingan Berbilang Dimensi kepada Kepingan Satu Dimensi dalam Go?

Bagaimana untuk Meratakan Kepingan Berbilang Dimensi kepada Kepingan Satu Dimensi dalam Go?

Patricia Arquette
Lepaskan: 2024-12-09 07:22:08
asal
256 orang telah melayarinya

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

Menukar Slice Multidimensi kepada Satu Dimensi dalam Go

Dalam pengaturcaraan, selalunya perlu menukar kepingan multidimensi kepada kepingan satu dimensi untuk pelbagai alasan. Walau bagaimanapun, Go tidak menyediakan fungsi langsung untuk melaksanakan operasi ini.

Slice 1D daripada Slice 2D Predetermined

Untuk kepingan 2D yang dikenali dan statik, gelung mudah boleh leperkannya dengan cekap menjadi kepingan 1D:

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

Pendekatan ini berulang ke atas setiap elemen dalam Potongan 2D dan terkumpulnya ke dalam kepingan 1D arr1d, menghasilkan:

arr1d = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Salin selepas log masuk

Perataan Generik untuk Dimensi Tidak Diketahui

Untuk kes di mana dimensi kepingan 2D adalah tidak diketahui atau dinamik, pendekatan yang lebih mantap diperlukan. Walaupun Go tidak mempunyai fungsi terbina dalam untuk meratakan generik, beberapa pakej menyediakan fungsi ini:

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

Pakej ini menawarkan fungsi yang secara rekursif meratakan hirisan multidimensi pada sebarang kedalaman menjadi satu dimensi slice.

Kesimpulan

Walaupun Go tidak menyediakan kaedah terbina dalam untuk meratakan kepingan multidimensi, penyelesaian berkesan wujud menggunakan gelung atau pakej luaran. Memahami pendekatan ini membolehkan penukaran struktur data kompleks yang cekap untuk pelbagai senario pengaturcaraan.

Atas ialah kandungan terperinci Bagaimana untuk Meratakan Kepingan Berbilang Dimensi kepada Kepingan Satu Dimensi dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan