Rumah >pembangunan bahagian belakang >Golang >Pemahaman mendalam tentang mekanisme asas tatasusunan dalam bahasa Go

Pemahaman mendalam tentang mekanisme asas tatasusunan dalam bahasa Go

WBOY
WBOYasal
2024-01-31 16:03:13541semak imbas

Pemahaman mendalam tentang mekanisme asas tatasusunan dalam bahasa Go

Prinsip pelaksanaan asas tatasusunan dalam bahasa Go

Struktur storan tatasusunan

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.

Akses tatasusunan

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.

Perjalanan tatasusunan

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

Perbandingan Tatasusunan

Tatasusunan boleh dibandingkan dengan membandingkan elemen tatasusunan. Peraturan perbandingan untuk tatasusunan adalah seperti berikut:

  • Jika panjang dua tatasusunan berbeza, tatasusunan yang lebih pendek dibandingkan dahulu.
  • Jika panjang dua tatasusunan adalah sama, perbandingan bermula dari elemen pertama.
  • Jika elemen dua tatasusunan adalah sama, teruskan membandingkan dengan elemen seterusnya.
  • Jika elemen dua tatasusunan berbeza, hasil perbandingan adalah palsu.

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.

Salinan tatasusunan

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]

Sekian tatasusunan

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]

Ringkasan tatasusunan

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!

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