Pengaturcaraan fungsional dalam Go membawa faedah berikut: Meningkatkan kebolehujian kod kerana fungsi tulen tidak mempunyai kesan sampingan. Meningkatkan keselarian kod kerana ketidakbolehubah membenarkan operasi serentak pada struktur data. Kurangkan ralat kerana prinsip pengaturcaraan berfungsi mengehadkan perkongsian atau mengubah keadaan secara tidak sengaja.
Cara menilai nilai pengaturcaraan berfungsi dalam Go
Pengaturcaraan fungsional ialah paradigma pengaturcaraan yang menekankan kebolehubahan, fungsi tulen dan komposisi fungsi. Menggunakan pengaturcaraan berfungsi dalam Go boleh membawa banyak faedah, termasuk:
Contoh Praktikal
Pertimbangkan kod Go berikut, yang mengira gabungan dua keping:
func intersect(a, b []int) []int { result := make([]int, 0) for _, v := range a { for _, w := range b { if v == w { result = append(result, v) } } } return result }
Fungsi ini menggunakan gelung bersarang untuk membandingkan setiap elemen dalam kepingan, yang mungkin menghasilkan hasil yang panjang pada hirisan besar .
Kita boleh menggunakan prinsip pengaturcaraan berfungsi untuk memfaktorkan semula fungsi ini untuk menjadikannya lebih cekap:
import "fmt" func intersectFP(a, b []int) []int { // 使用 map 收集 a 中的元素,并设置值为 true set := make(map[int]bool) for _, v := range a { set[v] = true } // 过滤 b 中的元素,检查它们是否在 map 中 result := []int{} for _, v := range b { if set[v] { result = append(result, v) } } return result } func main() { a := []int{1, 2, 3, 4} b := []int{3, 4, 5, 6} fmt.Println(intersectFP(a, b)) // [3, 4] }
Dalam fungsi ini:
a
. set
在 O(n) 的时间内收集 a
中的元素。b
b
dan menyemak sama ada ia berada dalam peta dalam masa O(m). Atas ialah kandungan terperinci Bagaimana untuk menilai nilai pengaturcaraan berfungsi golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!