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
DDDasal
2024-12-03 21:34:16709semak imbas

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...)
}

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...)

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)
}

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!

Kenyataan:
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