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
Mary-Kate Olsenasal
2024-12-18 02:05:09573semak imbas

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

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)

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!

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