A comprehensive collection of data structures and algorithms implemented in Go, including lists, sets, maps, trees, stacks, and queues.
GoDS (Go Data Structures) is a library that provides implementations of various data structures and algorithms in the Go programming language. It includes containers like lists, sets, maps, trees, stacks, and queues, offering developers a robust toolkit for managing collections with specific performance guarantees. The library solves the need for reliable, efficient data structures in Go projects without external dependencies.
Go developers who need well-tested, efficient data structures for applications ranging from simple collections to complex algorithmic tasks. It's particularly useful for those building systems that require specific container behaviors like ordered maps, priority queues, or self-balancing trees.
Developers choose GoDS for its comprehensive coverage of data structures, production-ready stability, and lack of external dependencies. Its clean interfaces, iterator support, and JSON serialization make it a versatile choice over rolling custom implementations or using less feature-complete alternatives.
GoDS (Go Data Structures) - Sets, Lists, Stacks, Maps, Trees, Queues, and much more
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements over 20 specialized data structures like TreeBidiMap, RedBlackTree, and PriorityQueue, covering needs from basic lists to complex algorithmic trees.
All containers follow consistent interfaces with methods like Empty() and Size(), and ordered types support iterators and enumerable functions for easy traversal and manipulation.
Dependency-free library with high test coverage, used in production, and inspired by established collections from Java and C++, ensuring reliability.
Supports JSON marshalling/unmarshalling for all structures and provides pre-defined comparators for common types, plus easy custom comparator creation.
Uses interface{} for values, requiring runtime type assertions that can lead to errors and lacks the compile-time safety offered by generics in modern Go.
Built before Go 1.18, it doesn't use generics, resulting in potential performance overhead and making it less efficient compared to newer, type-safe alternatives.
The interface{} implementation adds memory overhead for type information and can cause performance hits due to boxing/unboxing, especially in high-throughput scenarios.