Suatu tatasusunan dalam bahasa Go ialah blok memori berterusan di mana setiap elemen menduduki saiz ruang yang tetap. Jenis elemen tatasusunan boleh menjadi sebarang jenis data asas atau jenis tersuai. Panjang tatasusunan ditetapkan, ditentukan apabila tatasusunan dibuat dan tidak boleh diubah kemudian.
Prinsip pelaksanaan asas tatasusunan ialah menggunakan ruang memori berterusan untuk menyimpan elemen tatasusunan. Elemen pertama tatasusunan disimpan di alamat permulaan ruang ingatan, dan elemen terakhir disimpan di alamat akhir ruang ingatan. Tiada jurang antara elemen tatasusunan, jadi jumlah saiz tatasusunan adalah sama dengan saiz unsur tatasusunan didarab dengan panjang tatasusunan.
Sebagai contoh, kod berikut mencipta tatasusunan yang mengandungi 10 elemen jenis int:
var arr [10]int
Prinsip pelaksanaan asas tatasusunan ini adalah seperti berikut:
+---+---+---+---+---+---+---+---+---+---+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +---+---+---+---+---+---+---+---+---+---+
Elemen pertama tatasusunan disimpan di alamat permulaan 0 ruang ingatan, dan elemen terakhir Elemen disimpan di alamat akhir 9 ruang ingatan. Tiada jurang antara unsur tatasusunan, jadi jumlah saiz tatasusunan adalah sama dengan saiz unsur tatasusunan (4 bait) didarab dengan panjang tatasusunan (10), iaitu 40 bait.
Elemen tatasusunan boleh diakses melalui indeks. Indeks tatasusunan ialah integer yang mewakili kedudukan elemen dalam tatasusunan. Elemen pertama tatasusunan mempunyai indeks 0, dan elemen terakhir mempunyai indeks panjang tatasusunan tolak satu.
Sebagai contoh, kod berikut mengakses elemen pertama arr tatasusunan:
fmt.Println(arr[0])
Kod ini akan mengeluarkan 0 kerana elemen pertama arr tatasusunan ialah 0.
Tatasusunan boleh dilalui untuk gelung. Pembolehubah dalam gelung for boleh menjadi indeks tatasusunan atau elemen tatasusunan.
Sebagai contoh, kod berikut berulang melalui arr tatasusunan dan mengeluarkan setiap elemen:
for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) }
Kod ini akan mengeluarkan:
0 1 2 3 4 5 6 7 8 9
Tatasusunan boleh dibandingkan dengan membandingkan elemen tatasusunan. Peraturan perbandingan untuk tatasusunan adalah seperti berikut:
Sebagai contoh, kod berikut membandingkan array arr dan array br:
var arr = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} var br = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} fmt.Println(arr == br)
Kod ini akan menghasilkan true kerana elemen array arr dan array br adalah sama.
Susun atur boleh disalin melalui fungsi salin. Sintaks fungsi salin adalah seperti berikut:
func copy(dst, src []Type) int
Antaranya, dst ialah tatasusunan destinasi dan src ialah tatasusunan sumber. Fungsi salin akan menyalin elemen tatasusunan src ke tatasusunan dst. Jika panjang tatasusunan dst kurang daripada panjang tatasusunan src, hanya elemen panjang tatasusunan dst sahaja yang disalin.
Sebagai contoh, kod berikut menyalin tatasusunan arr ke tatasusunan br:
var arr = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} var br = [10]int{} copy(br, arr) fmt.Println(br)
Kod ini akan mengeluarkan:
[0 1 2 3 4 5 6 7 8 9]
Tatasusunan boleh dihiris untuk mencipta subarray. Sintaks penghirisan adalah seperti berikut:
arr[start:end]
di mana permulaan ialah indeks permulaan subarray, dan penghujung ialah indeks penamat subarray. Jika permulaan diabaikan, indeks permulaan subarray ialah 0. Jika hujung ditinggalkan, indeks akhir subarray ialah panjang tatasusunan.
Sebagai contoh, kod berikut mencipta subarray array arr:
var arr = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} var subArr = arr[2:5] fmt.Println(subArr)
Kod ini akan mengeluarkan:
[2 3 4]
Array ialah struktur data penting dalam bahasa Go. Prinsip pelaksanaan asas tatasusunan ialah menggunakan ruang ingatan berterusan untuk menyimpan elemen tatasusunan. Elemen tatasusunan boleh diakses melalui indeks atau diulang melalui gelung for. Tatasusunan boleh dibandingkan dengan membandingkan unsur tatasusunan, atau disalin menggunakan fungsi salin. Tatasusunan boleh dihiris untuk membuat subarray.
Atas ialah kandungan terperinci Pemahaman mendalam tentang mekanisme asas tatasusunan dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!