Bagaimana untuk Menukarkan Go Slice kepada Tatasusunan Bersaiz Tetap?

DDD
Lepaskan: 2024-11-26 00:18:11
asal
368 orang telah melayarinya

How to Convert a Go Slice to a Fixed-Sized Array?

Menukar Slice kepada Tatasusunan Saiz Tetap

Apabila bekerja dengan kepingan dan tatasusunan saiz tetap dalam Go, adalah penting untuk memahami cara melakukan penukaran antara mereka. Ini amat berguna apabila anda perlu bekerja dengan pustaka luaran atau antara muka yang menjangkakan tatasusunan saiz tetap.

Isu ini timbul apabila cuba menetapkan hirisan terus kepada tatasusunan saiz berbeza. Seperti yang ditunjukkan dalam contoh yang disediakan, ini mengakibatkan ralat tidak padan jenis.

Untuk menukar hirisan kepada tatasusunan saiz tetap, fungsi "salinan" boleh digunakan. Fungsi ini mengambil dua argumen: tatasusunan destinasi dan kepingan sumber. Ia menyalin kandungan kepingan sumber ke dalam tatasusunan destinasi, sehingga minimum panjangnya.

Contohnya:

slice := []byte("abcdefgh")
var arr [4]byte

copy(arr[:], slice[:4])

fmt.Println(arr)
// Output: [97 98 99 100]
Salin selepas log masuk

Di sini, fungsi salin digunakan untuk menyalin yang pertama empat bait daripada kepingan ke dalam tatasusunan arr. Memandangkan kepingan sumber lebih besar daripada tatasusunan destinasi, hanya empat bait pertama disalin.

Pendekatan lain ialah menggunakan fungsi salin tanpa menyatakan panjang kepingan sumber. Ini akan menyalin keseluruhan kepingan sumber secara automatik ke dalam tatasusunan destinasi:

copy(arr[:], slice)

fmt.Println(arr)
// Output: [97 98 99 100]
Salin selepas log masuk

Ringkasnya, menggunakan fungsi salin menyediakan kaedah yang boleh dipercayai dan cekap untuk menukar hirisan kepada tatasusunan saiz tetap dalam Go, memastikan bahawa tatasusunan mengandungi subset unsur yang dikehendaki daripada hirisan.

Atas ialah kandungan terperinci Bagaimana untuk Menukarkan Go Slice kepada Tatasusunan Bersaiz Tetap?. 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