go语言函数类型的一般使用(一)

go语言的函数类型

函数在go语言中也是一种变量,我们是通过type来自定义类型的,函数的类型是所拥有的相同参数与相同返回值的一种函数类型

函数作为类型的最大好处在于可以把这个类型的函数当做值来传递,下面是kubesphere的一个sliceutil的例子:

package main

import "fmt"

func removeString(slice []string, remove func(item string) bool) []string {
	for i := 0; i < len(slice); i++ {
		if remove(slice[i]) {
			slice = append(slice[:i], slice[i+1:]...)
		}
	}
	return slice
}

func main() {
	s := make([]string,0)
	s = append(s, "1","2","3","4","5")

	afterRemove := removeString(s, func(item string) bool {
		return item == "3"
	})
	fmt.Println(afterRemove)
}
output:
[1 2 4 5]

我们在传入一个函数作为参数给removeString,这个函数提供了判断是否要删除的依据,这样我们就可以很灵活的提供这个删除的依据了。看下面的改法

func main() {
	s := make([]string,0)
	s = append(s, "1","2","3","4","5")

	afterRemove := removeString(s, func(item string) bool {
		return item == "3" || item == "5"
	})
	fmt.Println(afterRemove)
}
output:
[1 2 4]

我们把入参函数的逻辑改动一下,输出结果就会改变,这样是不是很方便,不需要改remove的逻辑,把判断删除的依据从执行逻辑中抽离出来,在开发中根据自己的实际需求灵活变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值