Pemahaman mendalam tentang mekanisme asas tatasusunan dalam bahasa Go

WBOY
Lepaskan: 2024-01-31 16:03:13
asal
502 orang telah melayarinya

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
Salin selepas log masuk

Prinsip pelaksanaan asas tatasusunan ini adalah seperti berikut:

+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+---+---+---+---+---+---+---+---+---+---+
Salin selepas log masuk

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])
Salin selepas log masuk

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])
}
Salin selepas log masuk

Kod ini akan mengeluarkan:

0
1
2
3
4
5
6
7
8
9
Salin selepas log masuk

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)
Salin selepas log masuk

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
Salin selepas log masuk

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)
Salin selepas log masuk

Kod ini akan mengeluarkan:

[0 1 2 3 4 5 6 7 8 9]
Salin selepas log masuk

Sekian tatasusunan

Tatasusunan boleh dihiris untuk mencipta subarray. Sintaks penghirisan adalah seperti berikut:

arr[start:end]
Salin selepas log masuk

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)
Salin selepas log masuk

Kod ini akan mengeluarkan:

[2 3 4]
Salin selepas log masuk

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!

Label berkaitan:
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