golang中将函数当做函数参数使用


package main

import (
	"fmt"
	"strings"
)

// 使用type关键字让函数变成一个自定义类型
type caseFunc func(string) string
type funcOddEven func(int) bool

func main() {
	/* 将函数名当做实参进行传递 */
	strToCase1("hello World!", ProcessCase1)  // 字母大小交替显示

	var nums = []int{10, 20, 30, 15, 17, 21, 33, 22, 57, 88, 99}
	filterOddEven(nums, isOdd)  // 奇数
	filterOddEven(nums, isEven)  // 偶数
}

func strToCase1(str string, myFunc caseFunc) string {
	/* 定义一个函数,它的形参接收的是函数 */
	return myFunc(str)
}

func ProcessCase1(str string) (result string) {
	/* 处理字符串大小写交替显示 */
	for i, value := range str {
		if i%2 == 0 {
			result += strings.ToUpper(string(value))
		} else {
			result += strings.ToLower(string(value))
		}
	}
	fmt.Println(result)
	return result
}

func filterOddEven(arr []int, f funcOddEven) (result []int) {
	for _, value := range arr {
		if f(value) {
			result = append(result, value)
		}
	}
	fmt.Println(result)
	return
}

func isOdd(num int) bool {
	// 是奇数
	if num%2 != 0 {
		return true
	} else {
		return false
	}
}

func isEven(num int) bool {
	// 是偶数
	if num%2 == 0 {
		return true
	} else {
		return false
	}
}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM