基於員工薪資的Go語言篩選程式
在使用Go語言處理資料集時,瞭解過濾器非常重要,因為在某些情況下,您可能需要分析資料以獲得自定義結果。在本文中,我們將使用傳統的迴圈方法、函式方法以及使用goroutine的方法來建立基於員工薪資的員工列表過濾器。
示例 1
在下面的程式碼中,“FilterEmployeeBySallary()”根據薪資範圍篩選員工列表,並返回落在該薪資範圍內的員工列表。
package main import "fmt" type Employee struct { Name string Salary int } func FilterEmployeesBySalary(employees []Employee, minSalary, maxSalary int) []Employee { var filteredEmployees []Employee for _, employee := range employees { if employee.Salary >= minSalary && employee.Salary <= maxSalary { filteredEmployees = append(filteredEmployees, employee) } } return filteredEmployees } func main() { employees := []Employee{ {Name: "Aman", Salary: 50000}, {Name: "Nitin", Salary: 70000}, {Name: "Akhi", Salary: 40000}, {Name: "Akshay", Salary: 60000}, } filtered := FilterEmployeesBySalary(employees, 45000, 65000) fmt.Println("Filtered Employees:", filtered) }
輸出
Filtered Employees: [{Aman 50000} {Akshay 60000}]
示例 2
在下面的程式碼中,“filterEmployees”函式根據給定的過濾器篩選員工列表,而“sallaryFilter()”函式返回一個用於根據薪資篩選員工的過濾器函式。
package main import "fmt" type Employee struct { Name string Salary int } type FilterFunc func(Employee) bool func FilterEmployees(employees []Employee, filterFunc FilterFunc) []Employee { var filteredEmployees []Employee for _, employee := range employees { if filterFunc(employee) { filteredEmployees = append(filteredEmployees, employee) } } return filteredEmployees } func SalaryFilter(minSalary, maxSalary int) FilterFunc { return func(employee Employee) bool { return employee.Salary >= minSalary && employee.Salary <= maxSalary } } func main() { employees := []Employee{ {Name: "Sam", Salary: 50000}, {Name: "Akhil", Salary: 70000}, {Name: "Akshay", Salary: 40000}, {Name: "Summer", Salary: 80000}, } salaryFilter := SalaryFilter(45000, 85000) filtered := FilterEmployees(employees, salaryFilter) fmt.Println("Filtered Employees:", filtered) }
輸出
Filtered Employees: [{Sam 50000} {Akhil 70000} {Summer 80000}]
示例 3
下面的程式碼為每個員工建立一個goroutine,以非同步方式根據給定的薪資篩選他們,並將篩選後的員工透過通道傳送,主函式接收篩選後的員工並返回最終結果。
package main import ( "fmt" "time" ) type Employee struct { Name string Salary int } func FilterEmployeesConcurrently(employees []Employee, minSalary, maxSalary int) []Employee { var filteredEmployees []Employee employeeChannel := make(chan Employee) for _, employee := range employees { go func(e Employee) { if e.Salary >= minSalary && e.Salary <= maxSalary { employeeChannel <- e } }(employee) } // Collect filtered employees from the channel go func() { for employee := range employeeChannel { filteredEmployees = append(filteredEmployees, employee) } }() time.Sleep(time.Millisecond) return filteredEmployees } func main() { employees := []Employee{ {Name: "Arya", Salary: 5000}, {Name: "Sansa", Salary: 7000}, {Name: "Rob", Salary: 4000}, {Name: "John", Salary: 6000}, } filtered := FilterEmployeesConcurrently(employees, 4500, 6500) fmt.Println("Filtered Employees:", filtered) }
輸出
Filtered Employees: [{Arya 5000} {John 6000}]
結論
在本文中,我們討論瞭如何在Go語言中根據員工薪資建立員工過濾器。我們探索了三種不同的方法:使用goroutine和通道、傳統的迴圈方法和函式式方法。
廣告