ahmetb/go-linq

.NET LINQ capabilities in Go

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 31 minutes ago
Type:Library / SDKCategory(s):Core & Utility LibrariesLanguages & Runtimes
Added to GitGenius on September 18th, 2026
Created on December 19th, 2013
Open Issues & Pull Requests: 4 (+0)
GitHub issues: Enabled
Number of forks: 227
Total Stargazers: 3,776 (+0)
Total Subscribers: 80 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 29.7 hours
Mean response time: 520.6 days
90th percentile: 1969.4 days
Tracked items: 6

Most active contributors

Sign in to see contributor activity.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 0
New in 7 days: 0
Closed in 7 days: 0
Avg open age: N/A days
Stale 30+ days: 0
Stale 90+ days: 0

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • enhancement (1)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

go-linq is a language integrated query library for Go that brings LINQ-style capabilities to the language.

The library solves the problem of writing expressive, chainable data transformations in Go without sacrificing type safety or performance. Traditional Go approaches either require verbose loops or resort to runtime type assertions and reflection. go-linq achieves full compile-time type safety by leveraging generic methods, a language feature that allows individual methods to declare their own type parameters. This means type-changing operators like Select, Join, and GroupBy can return queries of different element types while maintaining type information throughout the entire chain. The implementation uses lazy evaluation with an iterator pattern based on the standard iter.Seq[T] type, ensuring that operations are only computed when needed and without per-element allocations.

Developers should choose this tool if they work with Go 1.27 or later and value type safety and readability in data transformation code. It suits projects that perform complex filtering, mapping, grouping, or joining operations on collections. The library works with slices, maps, strings, channels, iter.Seq[T] iterators, and custom collections. For teams still on older Go versions, the project maintains a previous version that offers the same operators but with an any-based API that requires runtime type assertions.

The project demonstrates active maintenance with a comprehensive test suite and performance benchmarks. Development is focused on leveraging modern Go language features to eliminate the type-erasure compromises of earlier versions. The codebase is written in vanilla Go with no external dependencies, and the tool is documented with multiple usage examples covering common patterns like filtering, selection, grouping, and custom method implementation.