Genesis
All generic functions for Go you ever need!
Install / Use
/learn @life4/GenesisREADME
Genesis
Generic functions for Go. Bringing the beauty of functional programming in Go 1.18+.
😎 Features:
- 🛠️ Over 170 generic functions for channels, maps, and slices.
- 💪 Uses the power of Go 1.18+ generics.
- 🧐 No code generation.
- 🪶 No dependencies (except is for testing).
- 🏃 Pure Go.
- 🪩 Sync and async versions of all the main functions.
🔨 When to use:
- 🐘 In a big project. More the project grows, more you find yourself writing boring generic code like "Min". Break the cycle.
- 🤝 In a team project. Each line of code you write means higher maintenance cost that in turn means loosing time and money.
- 🐶 In a pet project. Leave the boring stuff to us, focus on the fun parts.
- 📚 When readability matters.
slices.Shrinkis a function with a human-friendly name and documentation.s[:len(s):len(s)]is a jibberish and black magic. Prefer the former. - 💔 When you miss some conveniences that come in other languages out-of-the-box.
- 🐇 When you write a highly concurrent code and don't want to manually implement code for cancellation, results collection and ordering, worker groups, context, etc.
📦 What's inside:
Filter,Map, andReducefor data processing on steroids.FilterAsync,MapAsync, andReduceAsyncfor making your code fast and concurrent with a single line of code.GrowandShrinkfor reducing memory allocations.PermutationsandProductfor simple iterations.ShuffleandSortfor randomization.AnyandAllfor simple flow control.Range,Count, andCyclefor generating sequences.
And much more.
💾 Installation
go get github.com/life4/genesis
👀 Examples
Find the minimal value in a slice of ints:
lambdas.Must(slices.Min([]int{42, 7, 13})) == 7
Double values in a slice of ints:
slices.Map([]int{4, 8, 15}, func(el int) int { return el * 2 })
Concurrently check status codes for multiple URLs:
urls := []string{
"https://go.dev/",
"https://golang.org/",
"https://google.com/",
}
codes := slices.MapAsync(
urls, 0,
func(url string) int {
return lambdas.Must(http.Get(url)).StatusCode
},
)
🔨 Usage
Genesis contains the following packages:
- 🍞 slices: generic functions for slices (
[]T). - 🗺 maps: generic functions for maps (
map[K]V). - 📺 channels: generic function for channels (
chan T). - ⚙️ sets: generic function for sets (
map[T]struct{}). - 🛟 lambdas: helper generic functions to work with
slices.Mapand similar.
See 📄 DOCUMENTATION for more info.
Related Skills
node-connect
336.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
336.9kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
frontend-design
83.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
336.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
