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]
结论
我们编写并执行了一个程序,它接受一个整数切片和一个匿名函数,并使用使用过滤器函数的示例对每个元素进行过滤。