当前位置: 代码迷 >> 综合 >> go高阶函数
  详细解决方案

go高阶函数

热度:63   发布时间:2024-02-09 20:45:07.0

高阶函数(Hiher-order Function)定义为:满足下列条件之一的函数:

  • 接收一个或多个函数作为参数

  • 返回值是一个函数

高阶函数可以轻松的实现函数的个性化过滤,举个例子

package mainimport (  "fmt"
)type student struct {  firstName stringlastName  stringgrade     stringcountry   string
}func filter(s []student, f func(student) bool) []student {  var r []studentfor _, v := range s {if f(v) == true {r = append(r, v)}}return r
}func main() {  s1 := student{firstName: "Naveen",lastName:  "Ramanathan",grade:     "A",country:   "India",}s2 := student{firstName: "Samuel",lastName:  "Johnson",grade:     "B",country:   "USA",}s := []student{s1, s2}f := filter(s, func(s student) bool {if s.grade == "B" {return true}return false})fmt.Println(f)
}

在 main 函数中,我们首先创建了两个学生 s1 和 s2,并将他们添加到了切片 s。现在假设我们想要查询所有成绩为 B 的学生。为了实现这样的功能,我们传递了一个检查学生成绩是否为 B 的函数,如果是,该函数会返回 true。我们把这个函数作为参数传递给了 filter 函数(第 38 行)。上述程序会输出:

[{Samuel Johnson B USA}]

假设我们想要查找所有来自印度的学生。通过修改传递给 filter 的函数参数,就很容易地实现了。

 

 

  相关解决方案