package main import ( "fmt" ) //声明了一个函数类型 type testInt func(int) bool func isOdd(integer int) bool { if integer%2 == 0 { return false } return true } func isEven(integer int) bool { if integer%2 == 0 { return true } return false } //声明的函数在这个地方当做了一个参数 func filter(slice []int, f testInt) []int { var result []int for _, value := range slice { if f(value) { result = append(result, value) } } return result } func main() { slice := []int{1, 2, 3, 4, 5, 7} fmt.Println("slice = ", slice) //将函数当做值来传递 odd := filter(slice, isOdd) fmt.Println("奇数是:", odd) //将函数当做值来传递 even := filter(slice, isEven) fmt.Println("偶数是:", even) } //运行结果 $ go run test.go slice = [1 2 3 4 5 7] 奇数是: [1 3 5 7] 偶数是: [2 4]