文章目录
函数类型
函数类型指将函数定义为一种类型,一般用于实现类似"通用接口"的功能。
例如下面代码中,实现了将数组中的奇偶元素分到不同切片的功能。将识别切片元素奇偶性的函数定义为函数类型processFunc,再通过一个函数filter使用isOdd和isEven函数即可。
这里的filter就可以看做一个通用的接口函数。
package main
import "fmt"
func main(){
slice := []int{1,2,3,4,5,6,7}
odd := filter(slice, isOdd)
fmt.Println("奇数元素:", odd)
even := filter(slice, isEven)
fmt.Println("偶数元素:", even)
}
type processFunc func(int) bool // 声明函数类型
// 奇偶元素分组
func filter(slice []int, f processFunc) []int {
var res []int
for _, value := range slice {
if f(value){
res = append(res, value)
}
}
return res
}
// 判断奇元素
func isOdd(num int) bool {
if num%2 == 0 {
return false
}
return true
}
// 判断偶元素
func isEven(num int) bool {
if num%2 == 0 {
return true
}
return false
}
// 奇数元素:[1 3 5 7]
// 偶数元素:[2 4]