go2linq is Go implementation of .NET's LINQ to Objects. (See also: Language Integrated Query, LINQ, Enumerable Class.)
go2linq uses generics, so it requires at least Go 1.18.
go2linq was initially inspired by Jon Skeet's Edulinq series.
Installation
go get github.com/solsw/go2linq/v2@latest
Examples
Examples of go2linq usage are in the Example...
functions in test files
(see Examples).
Quick and easy example:
//go:build go1.18
package main
import (
"fmt"
"github.com/solsw/go2linq/v2"
)
func main() {
filter := go2linq.WhereMust(
go2linq.NewEnSlice(1, 2, 3, 4, 5, 6, 7, 8),
func(i int) bool { return i > 6 || i%2 == 0 },
)
squares := go2linq.SelectMust(
filter,
func(i int) string { return fmt.Sprintf("%d: %d", i, i*i) },
)
enr := squares.GetEnumerator()
for enr.MoveNext() {
square := enr.Current()
fmt.Println(square)
}
}
The previous code outputs the following:
2: 4
4: 16
6: 36
7: 49
8: 64