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]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值