Rumah >pembangunan bahagian belakang >Golang >Cara menggunakan julat untuk lelaran dalam golang

Cara menggunakan julat untuk lelaran dalam golang

PHPz
PHPzasal
2023-04-18 15:22:55630semak imbas

Julat ialah kata kunci dalam bahasa Go yang digunakan untuk mengulang tatasusunan, kepingan, saluran dan jenis koleksi lain Menggunakan sintaks kata kunci julat boleh menjadikan kod lebih ringkas dan jelas. Apabila menggunakan julat untuk lelaran, anda perlu memberi perhatian kepada beberapa butiran dan perbezaan dalam senario yang berbeza.

  1. Lelaran pada tatasusunan dan hirisan

Apabila melelaran pada tatasusunan dan kepingan, julat mengembalikan dua nilai: indeks dan nilai elemen. Salah satu nilai boleh ditinggalkan menggunakan _ pemegang tempat.

Contoh:

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

sli := []string{"hello", "world", "golang"}
for i, v := range sli {
    fmt.Printf("i: %d, v: %s\n", i, v)
}

Apabila melelaran tatasusunan atau hirisan, jika anda hanya memerlukan indeks atau nilai elemen, anda boleh menggunakan _ pemegang tempat untuk mengabaikan pembolehubah yang sepadan. Contohnya:

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

sli := []string{"hello", "world", "golang"}
for i := range sli {
    fmt.Printf("i: %d\n", i)
}
  1. Lelaran peta

Apabila mengulang peta, julat mengembalikan dua nilai: kunci dan nilai. Perbezaan daripada tatasusunan ialah pasangan nilai kunci dikembalikan dan bukannya indeks dan nilai elemen.

Contoh:

m := map[string]int{"a":1, "b":2, "c":3}
for key, value := range m {
    fmt.Printf("key: %s, value: %d\n", key, value)
}

Boleh juga digunakan semasa melelaran pada peta_ Mengabaikan salah satu nilai:

m := map[string]int{"a":1, "b":2, "c":3}
for k := range m {
    fmt.Println("key:", k)
}
  1. Menyalurkan pada rentetan

Apabila melelaran pada rentetan, julat mengembalikan dua nilai Nilai pertama ialah indeks aksara dan nilai kedua ialah nilai aksara pada indeks ini. Perlu diingatkan bahawa semasa penyusunan atur cara, rentetan ditukar kepada tatasusunan bait, jadi bait diulang dan bukannya aksara.

Contoh:

str := "hello,世界!"
for index, ch := range str {
    fmt.Printf("index: %d, char: %c\n", index, ch)
}
  1. Lelaran saluran

Apabila melelaran saluran, julat akan terus menyekat, menunggu kandungan boleh dibaca dalam saluran Pilih. Gelung julat ditamatkan apabila saluran ditutup atau bacaan selesai. Pembolehubah dalam gelung julat ialah pembolehubah yang menerima nilai saluran.

Contoh:

ch := make(chan int, 10)
go func() {
    for i := 0; i < 10; i++ {
        ch <- i
    }
    close(ch)
}()

for val := range ch {
    fmt.Println("value:", val)
}

Apabila menggunakan saluran, perhatian khusus harus diberikan kepada fakta bahawa jika nilai dalam saluran tidak dibaca, program akan membeku. Anda boleh menyelesaikan masalah ini dengan menggunakan saluran penimbal atau menggunakan pernyataan pilih.

Contoh saluran penimbal:

ch := make(chan int, 10)
go func() {
    for i := 0; i < 10; i++ {
        ch <- i
    }
    close(ch)
}()

for {
    select {
    case val, ok := <-ch:
        if !ok {
            return
        }
        fmt.Println("value:", val)
    default:
        // 通道中没有值可读
    }
}
  1. Penggunaan semula pembolehubah gelung

Apabila menggunakan julat untuk lelaran gelung, anda mesti memberi perhatian kepada masalah penggunaan semula pembolehubah gelung . Apabila menggunakan pembolehubah di dalam gelung, ia perlu disalin ke pembolehubah baharu, jika tidak, masalah pengulangan data akan berlaku.

Contoh:

// 错误示例
sli := []int{1, 2, 3}
for _, v := range sli {
    go func() {
        fmt.Println(v) // 输出结果都是 3
    }()
}

// 正确示例
sli := []int{1, 2, 3}
for _, v := range sli {
    val := v // 复制变量
    go func() {
        fmt.Println(val)
    }()
}

Ringkasnya, julat ialah kata kunci yang sangat praktikal dalam bahasa Go, yang boleh membantu kami mengulangi elemen dalam koleksi. Apabila menggunakan julat, anda perlu memberi perhatian kepada perbezaan dalam nilai pulangan apabila melelaran pelbagai jenis koleksi, serta isu penggunaan semula pembolehubah gelung.

Atas ialah kandungan terperinci Cara menggunakan julat untuk lelaran dalam golang. 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