随着Go 1.18 中泛型的加入,现在是否有可能提出与 C# 的LINQ to Objects等效的东西?
还是与 C# 泛型相比,Go 的泛型在原则上缺乏某些东西,这会使它变得困难或不可能?
例如,最初的101 个 LINQ 示例(“LowNumbers”)中的第一个现在可以使用泛型在 Go 中实现,大致如下所示:
package main
import (
"fmt"
)
type collection[T comparable] []T
func (input collection[T]) where(pred func(T) bool) collection[T] {
result := collection[T]{}
for _, j := range input {
if pred(j) {
result = append(result, j)
}
}
return result
}
func main() {
numbers := collection[int]{5, 4, 1, 3, 9, 8, 6, 7, 2, 0}
lowNums := numbers.where(func(i int) bool { return i < 5 })
fmt.Println("Numbers < 5:")
fmt.Println(lowNums)
}
米脂
忽然笑
相关分类