首页 > 文章列表 > golang函数的高阶函数

golang函数的高阶函数

golang 高阶函数
358 2024-04-23

golang函数的高阶函数

Go 语言中的高阶函数

简介

在 Golang 中,函数是一个一等值,这意味着它们可以像其他数据值一样赋值和传递。这为编写可重用和可维护的代码提供了强大的机制,特别是在函数式编程中。

高阶函数

高阶函数是接收函数作为参数或返回值的函数。这使得我们能够对函数进行抽象和操作,从而提高代码的可读性和可维护性。

常见的 Go 高阶函数

  • func Map(f func(T) U, s []T)[]U: 应用函数 f 到切片 s 的每个元素,返回一个新的包含 U 类型元素的切片。
  • func Filter(f func(T) bool, s []T)[]T: 过滤切片 s,返回一个包含满足条件 f 的元素的新切片。
  • func Reduce(f func(T1, T2) T3, seed T3, s []T1)T3: 将切片 s 中的元素从左到右累积,返回一个类型的最终结果。

实战案例

我们使用高阶函数来找出给定切片中出现次数最多的元素:

package main

import (
    "fmt"
    "sort"
)

func main() {
    nums := []int{1, 2, 3, 4, 5, 1, 2, 3}

    // 创建一个映射,key 是数字,value 是出现次数
    counts := map[int]int{}
    for _, num := range nums {
        counts[num]++
    }

    // 提取出现的数字
    numbers := []int{}
    for num := range counts {
        numbers = append(numbers, num)
    }

    // 对数字进行排序
    sort.Ints(numbers)

    // 找出出现次数最多的数字
    maxCount := 0
    mostFrequentNum := 0
    for _, num := range numbers {
        count := counts[num]
        if count > maxCount {
            maxCount = count
            mostFrequentNum = num
        }
    }

    fmt.Printf("出现次数最多的数字: %dn", mostFrequentNum)
}

输出:

出现次数最多的数字: 1