deckarep/golang-set

A simple, battle-tested and generic set type for the Go language. Trusted by GoogleCloudPlatform, Docker, 1Password, Ethereum and Hashicorp.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 4 minutes ago
Type:Library / SDKCategory(s):Core & Utility LibrariesLanguages & Runtimes
Added to GitGenius on September 14th, 2026
Created on July 3rd, 2013
Open Issues & Pull Requests: 12 (+0)
GitHub issues: Enabled
Number of forks: 293
Total Stargazers: 4,743 (+1)
Total Subscribers: 53 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 4.3 hours
Mean response time: 15.3 days
90th percentile: 28.9 days
Tracked items: 12

Most active contributors

Sign in to see contributor activity.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 5
New in 7 days: 0
Closed in 7 days: 3
Avg open age: 542 days
Stale 30+ days: 5
Stale 90+ days: 5

Recent activity

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

Top labels

No label distribution available yet.

Most active issues this week

Detailed Description

golang-set is a generic set collection library for the Go language.

The project addresses the absence of a built-in set type in Go's standard library by providing a generic implementation that mimics Python's set collection. It offers standard set operations and is designed to be thread-safe, allowing concurrent access to set data structures without external synchronization.

Developers should choose this library if their Go projects need set semantics with type safety through generics. It suits any application requiring efficient membership testing, deduplication, or set algebra operations. The tool is particularly valuable for teams already using Go 1.18 or later, which support the generic syntax the library leverages.

The project maintains active development with regular updates addressing edge cases and performance improvements. Recent work has focused on fixing JSON unmarshaling bugs that emerged from earlier refactoring efforts, introducing iterator support for Go 1.23 and later versions, adding BSON marshaling capabilities, implementing a PopN method for batch element removal, and optimizing memory allocations across various methods.