Golang proposal: container/: generic collection types
Summary
This article discusses a proposal to add generic collection types to Go's container package, expanding the standard library's capabilities with generics.
View Cached Full Text
Cached at: 07/31/26, 07:59 PM
golang/go
Source: https://github.com/golang/go
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 4.0 Attribution license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Download and Install
Binary Distributions
Official binary distributions are available at https://go.dev/dl/.
After downloading a binary release, visit https://go.dev/doc/install for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.
Similar Articles
GC shape stenciling in Go generics
An in-depth explanation of how the Go compiler implements generics using GC shape stenciling, comparing it to Rust's full monomorphization and Java's type erasure.
Watching Go's new garbage collector move through the heap
Go 1.26 makes Green Tea the default garbage collector, improving cache-friendliness. This article visualizes heap allocation with Go and C#, and discusses challenges with non-moving collectors and sparse pages.
Data types à la carte (2008)
This paper presents a technique for composing data types and functions from independent components, and extends the approach to combine free monads, enabling a modular structuring of Haskell's IO monad.
The implementation of select in Go
Explains the implementation of Go's select statement, covering compiler rewrites and the runtime's selectgo function.
Notes from Optimizing CPU-Bound Go Hot Paths
The article discusses performance optimization techniques for CPU-bound Go code, highlighting the limitations of generics and interface abstractions due to lack of inlining, and advocates for code duplication in hot paths. It provides examples from a Brotli port and deep-dive benchmarking.