使用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 函数的示例过滤每个元素。

更新时间: 2023年8月4日

186 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告