使用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 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.