Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah struktur bagi julat dalam bahasa go?

Apakah struktur bagi julat dalam bahasa go?

青灯夜游
青灯夜游asal
2023-01-11 18:00:041808semak imbas

"untuk julat" ialah struktur lelaran unik bahasa Go, yang boleh digunakan untuk melintasi tatasusunan, kepingan, rentetan, peta dan saluran. Sintaks "untuk julat" adalah serupa dengan struktur foreach Bentuk umum ialah "untuk kunci, val := julat julat {...}"; koleksi, jadi ia biasanya hanya baca sahaja , sebarang pengubahsuaian yang dibuat padanya tidak akan menjejaskan nilai asal dalam koleksi.

Apakah struktur bagi julat dalam bahasa go?

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Struktur untuk julat ialah struktur lelaran yang unik bagi bahasa Go Ia sangat berguna dalam banyak situasi untuk julat boleh merentasi tatasusunan, kepingan, rentetan, peta dan saluran untuk Sintaks julat serupa dengan pernyataan foreach dalam bahasa lain Bentuk umum ialah:

for key, val := range coll {
    ...
}

Perlu diingatkan bahawa val sentiasa merupakan salinan nilai indeks yang sepadan dalam koleksi, jadi ia biasanya hanya dibaca. -sahaja, sebarang pengubahsuaian yang dibuat padanya tidak akan menjejaskan nilai asal dalam koleksi. Rentetan ialah koleksi aksara yang dikodkan Unikod (atau rune), jadi ia juga boleh digunakan untuk mengulang rentetan:

for pos, char := range str {
    ...
}

Setiap aksara rune dan indeks adalah satu demi satu dalam gelung julat untuk Sejajar, ia boleh mengenal pasti aksara berkod Unikod secara automatik mengikut peraturan UTF-8.

Nilai pulangan untuk lintasan julat mempunyai peraturan tertentu:

  • Indeks dan nilai pulangan tatasusunan, hirisan dan rentetan.

  • peta mengembalikan kunci dan nilai.

  • Saluran hanya mengembalikan nilai dalam saluran.

Susun tatasusunan dan kepingan lintasan - dapatkan indeks dan nilai

Dalam kod lintasan, kunci dan nilai mewakili subskrip dan subskrip kepingan masing-masing Tandakan nilai yang sepadan Kod berikut menunjukkan cara melintasi hirisan Tatasusunan juga dilalui dengan cara yang sama:

for key, value := range []int{1, 2, 3, 4} {
    fmt.Printf("key:%d  value:%d\n", key, value)
}

Keluaran kod adalah seperti berikut:

Apakah struktur bagi julat dalam bahasa go?

Melintasi rentetan - dapatkan aksara

Bahasa Go adalah serupa dengan bahasa lain Anda boleh melintasi rentetan melalui gabungan untuk julat, kekunci dan nilai mewakili indeks dan nilai rentetan masing-masing setiap aksara dalam rentetan.

Kod berikut menunjukkan cara melintasi rentetan:

var str = "hello 你好"
for key, value := range str {
    fmt.Printf("key:%d value:0x%x\n", key, value)
}

Keluaran kod adalah seperti berikut:

Apakah struktur bagi julat dalam bahasa go?

Pembolehubah dalam nilai kod , jenis sebenar ialah jenis rune, dan mencetaknya dalam perenambelasan ialah pengekodan aksara.

Lintasi peta - dapatkan kunci dan nilai peta

Untuk jenis peta, apabila merentasi julat, kunci dan nilai mewakili kunci dan nilai kunci indeks daripada peta masing-masing Nilai yang sepadan dengan indeks biasanya dipanggil pasangan nilai kunci peta, kerana ia muncul secara berpasangan Kod berikut menunjukkan cara melintasi peta.

m := map[string]int{
    "hello": 100,
    "world": 200,
}
for key, value := range m {
    fmt.Println(key, value)
}

Output kod adalah seperti berikut:

Apakah struktur bagi julat dalam bahasa go?

Nota:

Apabila melintasi peta, nilai utama output by the traversal are unordered , jika anda memerlukan output pasangan nilai kunci yang dipesan, anda perlu mengisih hasilnya.

[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Apakah struktur bagi julat 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
Artikel sebelumnya:Apakah itu bahasa Go GOPATHArtikel seterusnya:Apakah itu bahasa Go GOPATH