Go 語言程式:建立員工過濾器


Go 語言允許您對特定資料應用過濾器,以便分析指定資料、處理資料的特定屬性、資料整合等等。本文將編寫一個程式來建立員工過濾器,使用迭代過濾、函式式過濾以及 Go 語言內建的過濾函式。

語法

filtered := funk.Filter(collection, func(item Type) bool {…})   

collection = 要過濾的原始集合。

此函式接受兩個引數:一個集合和一個過濾函式。

演算法

  • 建立一個名為“employees”的 Employee 型別的陣列或切片。

  • 使用包含員工姓名、年齡和部門的 Employee 例項集合來設定“employees”切片。

  • 呼叫 filterEmployeesByAge 函式,並將“employees”切片、最小年齡和最大年齡作為引數提供。

  • 在 filterEmployeesByAge 方法中,建立一個名為“filteredEmployees”的空 Employee 型別切片。確定每個員工的年齡是否大於或等於最小年齡且小於或等於最大年齡。如果年齡在提供的範圍內,則將員工新增到“filteredEmployees”切片中。獲取“filteredEmployees”切片。

  • 將變數“filtered”設定為 filterEmployeesByAge 的結果。

  • 應列印“已過濾的員工:”。遍歷“filtered”切片中的所有員工。

  • 列印每個員工的姓名。結束 main 函式。

示例 1

在此方法中,我們將使用迭代方法來過濾員工資料。當您需要對過濾過程進行更多控制時,此方法更適用。

package main

import "fmt"

type Employee struct {
   Name       string
   Age        int
   Department string
}

func filterEmployeesByAge(employees []Employee, minAge, maxAge int) []Employee {
   var filteredEmployees []Employee

   for _, emp := range employees {
      if emp.Age >= minAge && emp.Age <= maxAge {
         filteredEmployees = append(filteredEmployees, emp)
      }
   }

   return filteredEmployees
}

func main() {
   employees := []Employee{
      {Name: "Akhil", Age: 24, Department: "Engineering"},
      {Name: "Akshay", Age: 28, Department: "Sales"},
      {Name: "Sahil", Age: 23, Department: "Marketing"},
   }

   filtered := filterEmployeesByAge(employees, 24, 45)

   fmt.Println("Filtered Employees:")
   for _, emp := range filtered {
      fmt.Println(emp.Name)
   }
}

輸出

Filtered Employees:
Akhil
Akshay

示例 2

在此方法中,我們將使用高階函式來過濾員工。此方法涉及使用“filter”等高階函式來應用過濾函式。

package main

import "fmt"

type Employee struct {
   Name       string
   Age        int
   Department string
}

type Predicate func(Employee) bool

func filterEmployees(employees []Employee, predicate Predicate) []Employee {
   var filteredEmployees []Employee

   for _, emp := range employees {
      if predicate(emp) {
         filteredEmployees = append(filteredEmployees, emp)
      }
   }

   return filteredEmployees
}

func main() {
   employees := []Employee{
      {Name: "Akhil", Age: 24, Department: "Engineering"},
      {Name: "Akshay", Age: 32, Department: "Sales"},
      {Name: "Nitin", Age: 28, Department: "Marketing"},
	}

   filtered := filterEmployees(employees, func(emp Employee) bool {
      return emp.Age>= 30 && emp.Age <= 45
   })

   fmt.Println("Filtered Employees:")
   for _, emp := range filtered {
      fmt.Println(emp.Name)
   }
}

輸出

Filtered Employees:
Akshay

示例 3

在下面給出的程式碼中,我們將使用“go-funk”庫根據特定年齡過濾員工切片。

package main

import (
   "fmt"

   "github.com/thoas/go-funk"
)

type Employee struct {
   Name       string
   Age        int
   Department string
}

func main() {
   employees := []Employee{
      {Name: "Akhil", Age: 28, Department: "Engineering"},
      {Name: "Akshay", Age: 32, Department: "Sales"},
      {Name: "Sahil", Age: 40, Department: "Marketing"},
   }

   filtered := funk.Filter(employees, func(emp Employee) bool {
      return emp.Age >= 30 && emp.Age <= 45
   }).([]Employee)

   fmt.Println("Filtered Employees:")
   for _, emp := range filtered {
      fmt.Println(emp.Name)
   }
}

輸出

Filtered Employees: 
Akshay 
Sahil

結論

在本文中,我們討論瞭如何在 Go 語言中為員工建立過濾器。我們探討了不同的資料過濾技術,包括名為 funk.filter() 的內建函式、函式式過濾方法以及迭代過濾。當您想要處理特定屬性、分析資料等時,資料過濾非常有用。

更新於: 2023年7月14日

582 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告