Golang 接受一个整数切片和一个匿名函数,对切片中的每个元素进行过滤

Golang 接受一个整数切片和一个匿名函数,对切片中的每个元素进行过滤

在这篇Go语言文章中,我们将编写程序,接受一个整数切片和一个匿名函数,对切片中的每个元素进行过滤。匿名函数是一种不使用函数名并由分配给它的变量调用的函数。它通常与事件监听器一起使用。在这里,将使用匿名函数创建Filter函数来过滤切片中的值。

语法

func append(slice, element_1, element_2…, element_N) []T

append函数用于向数组切片中添加值。它接受多个参数。第一个参数是我们希望添加值的数组,随后是要添加的值。然后,该函数将返回包含所有值的最终数组切片。

func range(variable)

range函数用来遍历任意数据类型。要使用它,首先我们需要写range关键字,后面跟上我们想要迭代的数据类型,结果循环将迭代到变量的最后一个元素。

步骤

  • 该程序导入所需的主要(main)和格式(fmt)包。

  • 创建一个主函数。

  • 在main函数中,创建一个名为values的整数切片,并初始化它的值。

  • 在这一步中,使用values切片以及一个匿名的过滤函数作为参数来调用Filter函数,该过滤函数检查元素是否为偶数。

  • 将这些值存储在名为filtered_values的变量中。

  • 在这一步中,创建一个Filter函数,该函数以切片values和一个函数(fn)作为参数,并返回一个新的经过过滤的整数切片。

  • 在这一步中,创建一个类型为int的空切片filtered_values。

  • 然后,使用for循环遍历values切片中的每个值。

  • 然后,检查fn函数是否对当前值返回true。

  • 如果fn函数返回true,则使用append函数将该值添加到filtered_values切片中。

  • 循环终止后,返回filtered_values切片。

示例

在本示例中,我们将编写一个使用过滤器和匿名函数筛选切片中的每个元素的Golang程序。筛选后的值将被附加到切片中。

package main

import (
    "fmt"
)
func main() {
    values := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    fmt.Println("The intial values given here are:", values)

    filtered_values := Filter(values, func(n int) bool {
        return n%2 == 0
    })

    fmt.Println("The filtered numbers are:")
    fmt.Println(filtered_values)
}

func Filter(values []int, fn func(int) bool) []int {
    filtered_values := []int{}

    for _, val := range values {
        if fn(val) {
            filtered_values = append(filtered_values, val)
        }
    }

    return filtered_values
}

输出

The initial values given here are: [1 2 3 4 5 6 7 8 9 10]
The filtered numbers are:
[2 4 6 8 10]

结论

我们编写并执行了一个程序,它接受一个整数切片和一个匿名函数,并使用使用过滤器函数的示例对每个元素进行过滤。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程