pie
🍕 Enjoy a slice! A utility library for dealing with slices and maps that focuses on type safety and performance. (by elliotchance)
async
experimental promises in go1.18 with generics (by nkcmr)
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pie
Posts with mentions or reviews of pie.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-03-22.
-
Generic slice utils? I just created
How does this library differ from lo or pie?
-
remove element from a slice
otherwise, this library might do what you want https://github.com/elliotchance/pie
-
Go: Don't Change the Libraries in 1.18
I don't know how people were looking at these Java 2.0-esque kludges and still arguing generics were superfluous but I'm glad it's landed: https://github.com/elliotchance/pie
async
Posts with mentions or reviews of async.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2021-12-22.
-
Retrofitting Async/Await in Go 1.18
// Taken from: https://github.com/nkcmr/async/blob/main/async.go type syncPromise[T any] struct { done chan struct{} v T err error } func (s *syncPromise[T]) Await(ctx context.Context) (T, error) { select { case <-ctx.Done(): var zerov T return zerov, ctx.Err() case <-s.done: return s.v, s.err } } func (s *syncPromise[T]) Settled() bool { select { case <-s.done: return true default: return false } }
-
Go Generics Facilitators
I made this: https://github.com/nkcmr/async so I can experiment with the idea of Promises in Go. Keep in mind it's experimental and I've only lightly played around with the pattern.
- Async: Experimental Promises in Go1.18 with Generics
What are some alternatives?
When comparing pie and async you can also consider the following projects:
lo - 💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find...)
PIE - A behavior for Internet Explorer allowing it to recognize and render various CSS3 box decoration properties
slicesol
generic - A collection of generic data structures written in Go.
slicer - Utility class for handling slices
functools - Functional tools in Go 1.18 using newly introduced generics
slice - Type-safe functions for common Go slice operations
genfuncs - Go 1.18+ polymorphic generic containers and functions.
go - The Go programming language
async.go - A collection of utilities for async code in Go.
pjson - Helps to easily JSON marshal / unmarshal tagged unions in go
fut