Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Meratakan Slice 2D menjadi Slice 1D dalam Go?

Bagaimana untuk Meratakan Slice 2D menjadi Slice 1D dalam Go?

DDD
Lepaskan: 2024-12-03 21:34:16
asal
709 orang telah melayarinya

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

Meratakan Slice 2D menjadi Slice 1D dalam Go

Dalam Go, pada masa ini tiada fungsi asli yang membenarkan untuk meratakan sesuatu Potongan 2D menjadi kepingan 1D dalam satu operasi. Walau bagaimanapun, terdapat beberapa cara yang mudah dan jelas untuk mencapai matlamat ini.

Satu pendekatan ialah menggunakan gelung untuk mengulangi setiap elemen kepingan 2D dan menambahkannya pada kepingan 1D:

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

Kaedah ini jelas dan ringkas, menjadikannya mudah difahami dan dilaksanakan.

Pilihan lain ialah memanfaatkan terbina dalam append() berfungsi untuk menyatukan berbilang kepingan menjadi satu kepingan:

newArr := append([]int32{}, arr...)
Salin selepas log masuk

Pendekatan ini secara langsung menambahkan keseluruhan kepingan 2D pada kepingan 1D, memberikan penyelesaian yang lebih ringkas.

Akhir sekali, jika kepingan 2D mengandungi kepingan yang sama panjang, adalah mungkin untuk menggunakan penghirisan dan fungsi copy() untuk mencipta 1D slice:

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

Kaedah ini lebih kompleks tetapi mungkin lebih cekap dalam senario tertentu.

Walaupun Go tidak mempunyai fungsi khusus untuk meratakan kepingan, penyelesaian ini menawarkan penyelesaian yang mudah dan cekap untuk menukar Potongan 2D menjadi kepingan 1D.

Atas ialah kandungan terperinci Bagaimana untuk Meratakan Slice 2D menjadi Slice 1D 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan