使用Go语言编写程序,该程序接收一个整数切片和一个匿名函数,用于过滤切片中的每个元素。
在这篇 Go 语言文章中,我们将编写程序,这些程序接收一个整数切片和一个匿名函数,用于过滤切片中的每个元素。匿名函数是指不使用函数名称的函数,并通过分配给它的变量来调用。它通常用于事件监听器。在这里,将使用匿名函数创建 Filter 函数来从切片中过滤值。
语法
func append(slice, element_1, element_2…, element_N) []T
append 函数用于向数组切片添加值。它接受多个参数。第一个参数是要向其添加值的数组,后跟要添加的值。然后,该函数返回包含所有值的数组的最终切片。
func range(variable)
range 函数用于迭代任何数据类型。要使用它,我们首先必须编写 range 关键字,后跟要迭代的数据类型,结果循环将迭代到变量的最后一个元素。
算法
此程序导入 main 和 fmt 包作为必要的包。
创建一个 main 函数。
在 main 中,创建一个名为 values 的整数切片并用值初始化它。
在此步骤中,使用 values 切片和一个过滤匿名函数调用 Filter 函数,该函数检查元素是否为偶数。
将值存储在名为 filtered_values 的变量中。
在此步骤中,创建 Filter 函数,该函数以切片值和一个函数 (fn) 作为参数,并返回一个新的过滤后的整数切片。
在此步骤中,创建一个类型为 int 的空切片 filtered_values。
然后,使用 for 循环迭代 values 切片中的每个值。
然后,检查 fn 函数对于当前值是否返回 true。
如果 fn 函数返回 true,则使用 append 函数将该值附加到 filtered_values 切片。
循环终止后,返回 filtered_values 切片。
示例
在此示例中,我们将编写一个 Go 语言程序,该程序通过使用 filter 和匿名函数过滤切片中的每个元素。过滤后的值将附加到切片。
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]
结论
我们编译并执行了接收整数切片和匿名函数的程序,该匿名函数使用 filter 函数的示例过滤每个元素。