Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memperuntukkan Tatasusunan dengan Saiz Boleh Ubah dalam Go?

Bagaimanakah Saya Boleh Memperuntukkan Tatasusunan dengan Saiz Boleh Ubah dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-18 02:05:09
asal
520 orang telah melayarinya

How Can I Allocate Arrays with Variable Size in Go?

Memperuntukkan Tatasusunan dengan Saiz Pembolehubah dalam Go

Tidak seperti tatasusunan bersaiz malar yang diisytiharkan menggunakan const, Go tidak membenarkan peruntukan langsung tatasusunan dengan saiz yang ditentukan masa larian. Ini jelas dalam kod haram berikut:

n := 1
var a [n]int
Salin selepas log masuk

Walau bagaimanapun, terdapat penyelesaian: gunakan kepingan dan bukannya tatasusunan. Slices ialah rujukan kepada tatasusunan yang mendasari dan menyediakan keupayaan mengubah saiz yang dinamik. Fungsi make() terbina dalam digunakan untuk membuat kepingan dan tatasusunan asasnya. Ia memerlukan tiga hujah:

  • Panjang: Menentukan panjang awal hirisan
  • Kapasiti: Menunjukkan kapasiti maksimum tatasusunan asas
  • Jenis Unsur: Mentakrifkan jenis elemen dalam kepingan

Dengan mencipta kepingan menggunakan make(), kami secara tidak langsung peruntukkan tatasusunan dengan saiz masa jalan:

n := 12
s := make([]int, n, 2*n)
Salin selepas log masuk

Dalam kes ini, tatasusunan saiz 2*n diperuntukkan dan s merujuk kepada kepingan yang mengandungi n elemen pertama tatasusunan.

Masih tidak jelas mengapa Go tidak membenarkan peruntukan langsung tatasusunan bersaiz berubah-ubah, tetapi penyelesaian menggunakan kepingan menyediakan alternatif yang fleksibel dan cekap. Akibatnya, adalah disyorkan untuk menggunakan kepingan dalam kebanyakan senario apabila bekerja dengan struktur data dinamik dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memperuntukkan Tatasusunan dengan Saiz Boleh Ubah 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