go语言学习之自 函数作为值的用法

//处理字符串,实现大小写奇数偶数交替
package main
import(
	"fmt"
	"strings"
)
func main() {
	str := "aBwfawjoajfWFnojfoawEWE"
	result := proessLetter(str)
	fmt.Printf(result)
}

func proessLetter(str string) string{
	result := ""
	for i,v := range str{
		if i%2 == 0{
				result += strings.ToUpper(string(v))
			}else{
				result += strings.ToLower(string(v))	
			}
	}
	return result
}

把函数当参数来使用

//处理字符串,实现大小写奇数偶数交替
package main
import(
	"fmt"
	"strings"
)
func main() {
	str := "aBwfawjoajfWFnojfoawEWE"
	//把函数当参数来调用
	res := StringToCase(str,proessLetter)
	fmt.Printf(res)
}

func proessLetter(str string) string{
	result := ""
	for i,v := range str{
		if i%2 == 0{
				result += strings.ToUpper(string(v))
			}else{
				result += strings.ToLower(string(v))	
			}
	}
	return result
}

func  StringToCase(str string,myfun func(string) string) string{
	return myfun(str)
}

使用type关键词自定义类型

//使用type关键词自定义类型
package main
import(
	"fmt"
	"strings"
)
type caseFunc func(string) string
func main() {
	str := "aBwfawjoajfWFnojfoawEWE"
	//把函数当参数来调用
	res := StringToCase(str,proessLetter)
	fmt.Printf(res)
}

func proessLetter(str string) string{
	result := ""
	for i,v := range str{
		if i%2 == 0{
				result += strings.ToUpper(string(v))
			}else{
				result += strings.ToLower(string(v))	
			}
	}
	return result
}

func  StringToCase(str string,myfun caseFunc) string{
	return myfun(str)
}

获取切片奇偶切片

package main
 import "fmt"
type myfun func(int) bool
func main() {
	arr  := []int{1,2,5,10,12,13,15,20,22,31}
	even := Filter(arr,isEven)
	fmt.Println("偶数",even)

	odd  := Filter(arr,isOdd)
	fmt.Println("奇数",odd)
}


func isEven(num int) bool{
		if(num %2 == 0){
			return true
	}
	return false
}


func isOdd(num int) bool{
		if(num %2 == 0){
			return false
		}
	return true
}

//根据函数来处理切片,实现奇偶分组
func Filter(arr []int,f myfun) []int{
	var result []int
	for _,value := range arr{
		if f(value) {
			result = append(result,value)
		}
	}
	return result
}

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值