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