Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mari kita bercakap tentang beberapa kaedah pengumpulan dalam golang

Mari kita bercakap tentang beberapa kaedah pengumpulan dalam golang

PHPz
PHPzasal
2023-04-25 10:48:421144semak imbas

Golang ialah bahasa pengaturcaraan sumber terbuka, dan menulis aplikasi dan perkhidmatan rangkaian yang cekap adalah salah satu kekuatannya. Di Golang, pengumpulan adalah operasi biasa. Artikel ini akan memperkenalkan beberapa kaedah pengumpulan di Golang.

  1. Kaedah gelung konvensional

Kaedah pengumpulan paling asas di Golang ialah menggunakan gelung untuk konvensional. Berikut ialah contoh mudah:

sum := 0
for i := 0; i < 10; i++ {
    sum += i
}
fmt.Println(sum)

Dalam contoh di atas, kami memulakan pembolehubah sum dan pembolehubah pembilang i. Kemudian, kami menggunakan gelung for untuk berulang 10 kali, menambah nilai i kepada sum. Akhir sekali, kami mengeluarkan nilai sum.

  1. Gunakan kaedah julat

Kaedah julat di Golang boleh merentasi jenis data dengan mudah seperti tatasusunan, kepingan dan peta. Kita boleh menggunakan kaedah julat untuk mengumpul unsur. Berikut ialah contoh hirisan jenis int terkumpul:

nums := []int{1, 2, 3, 4, 5}
sum := 0
for _, num := range nums {
    sum += num
}
fmt.Println(sum)

Dalam contoh di atas, kami menentukan hirisan integernums dan pembolehubah sum. Kemudian, kami menggunakan kaedah julat untuk mengulangi elemen dalam nums dan menambahnya pada pembolehubah sum. Akhir sekali, kami mengeluarkan nilai sum.

  1. Gunakan kaedah reduce

Di Golang, kaedah reduce boleh membantu kami menggunakan fungsi accumulator dalam kepingan atau slice untuk mengira nilai baharu. Berikut ialah contoh menggunakan kaedah pengurangan untuk mengumpul hirisan integer:

nums := []int{1, 2, 3, 4, 5}
sum := reduce(nums, func(x, y int) int {
    return x + y
})
fmt.Println(sum)

Dalam contoh di atas, kami mentakrifkan hirisan integernums dan kemudian menggunakan kaedah pengurangan untuk mengumpulnya. Kami menggunakan fungsi penumpuk tanpa nama yang mengambil dua parameter x dan y dan mengembalikan jumlahnya. Kaedah kurangkan menggunakan fungsi penumpuk ini untuk mengulangi elemen dalam kepingan dan mengembalikan hasil terkumpul.

  1. Gunakan kaedah goroutine serentak

Kaedah pengumpulan lain di Golang ialah menggunakan kaedah goroutine serentak. Memandangkan Golang ialah bahasa pengaturcaraan serentak, kaedah ini boleh melaksanakan tugas pengumpulan secara selari pada berbilang teras CPU, dengan itu meningkatkan kelajuan berjalan. Berikut ialah contoh menggunakan kaedah goroutine serentak untuk mengumpul kepingan integer:

nums := []int{1, 2, 3, 4, 5}
sum := 0
c := make(chan int)

for _, num := range nums {
    go func(n int) {
        c <- n
    }(num)
}

for i := 0; i < len(nums); i++ {
    sum += <-c
}

fmt.Println(sum)

Dalam contoh di atas, kami mentakrifkan kepingan integernums, pembolehubah sum dan saluran c. Kami kemudian menggunakan gelung for untuk melelar melalui elemen dalam nums dan lulus setiap elemen sebagai parameter kepada fungsi goroutine tanpa nama. Fungsi ini menghantar setiap parameter ke saluran c. Semasa membaca elemen saluran satu demi satu menggunakan gelung for, kami mengumpul nilai pembolehubah sum. Akhir sekali, kami mengeluarkan nilai sum.

Kesimpulan

Di atas adalah beberapa kaedah pengumpulan di Golang. Kaedah yang anda pilih bergantung pada keutamaan peribadi anda dan keperluan tugas. Dalam amalan, anda mungkin perlu mencuba beberapa kaedah dan memilih kaedah yang paling sesuai untuk anda. Jika anda ingin memahami Golang dengan lebih baik, sila baca bahan yang berkaitan dengan kerap untuk meningkatkan kemahiran anda.

Atas ialah kandungan terperinci Mari kita bercakap tentang beberapa kaedah pengumpulan 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