GO: 定义一个函数类型

文章目录

      • 函数类型

函数类型

函数类型指将函数定义为一种类型,一般用于实现类似"通用接口"的功能。
例如下面代码中,实现了将数组中的奇偶元素分到不同切片的功能。将识别切片元素奇偶性的函数定义为函数类型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]

你可能感兴趣的:(GO)