A stream-like, immutable, lazy-loading Go library for functional operations on slices with a focus on performance.
Koazee is a Go library that provides a functional, stream-like API for working with slices. It allows developers to perform common data transformations—such as filtering, mapping, sorting, and reducing—using a chainable, lazy, and immutable interface. It solves the problem of verbose, imperative slice manipulation by offering a more declarative and composable approach.
Go developers who frequently work with slice data and want a more functional, expressive way to transform and query collections without sacrificing performance.
Developers choose Koazee for its combination of functional programming convenience and Go-like performance, offering a rich set of operations with lazy evaluation and immutability out of the box.
A StreamLike, Immutable, Lazy Loading and smart Golang Library to deal with slices.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All operations return new streams without modifying the original slice, preventing side effects, as shown in examples where input arrays remain unchanged after stream creation.
Operations are queued and only executed upon calling Do(), optimizing performance by avoiding unnecessary computations, especially beneficial for large datasets in chained pipelines.
Offers over 20 operations like Filter, Map, Reduce, and GroupBy, enabling complex data transformations in a single chain, demonstrated in the combined sorting and filtering example.
Works with slices of any type—ints, strings, custom structs—without requiring type-specific functions, providing flexibility across diverse data structures.
Version 0.0.3 indicates immaturity, with potential for breaking changes, bugs, and limited stability, as acknowledged in the roadmap and issue tracking.
Despite performance focus, functional abstractions introduce overhead compared to manual loops; benchmarks linked in the README show it may not always outperform standard libraries for simple tasks.
Lacks native parallel processing capabilities, making it less suitable for CPU-bound tasks where concurrent execution could improve performance, as operations are sequential.