Go 函数式 map filter find reduce 等的实现代码

31 min read

实现 map 函数:

func Map(arr []int, f func(int) int) []int {
    result := make([]int, len(arr))
    for i, v := range arr {
        result[i] = f(v)
    }
    return result
}

实现 filter 函数:

func Filter(arr []int, f func(int) bool) []int {
    result := []int{}
    for _, v := range arr {
        if f(v) {
            result = append(result, v)
        }
    }
    return result
}

实现 find 函数:

func Find(arr []int, f func(int) bool) int {
    for _, v := range arr {
        if f(v) {
            return v
        }
    }
    return -1 // 如果未找到,则返回一个错误值
}

实现 reduce 函数:

func Reduce(arr []int, f func(int, int) int, initVal int) int {
    result := initVal
    for _, v := range arr {
        result = f(result, v)
    }
    return result
}