高阶函数(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 的函数参数,就很容易地实现了。