{"id":38859,"url":"https://github.com/thefuga/go-collections","name":"go-collections","description":"Blazingly fast Collections package. Inspired by Laravel, written in Go.","projects_count":94,"last_synced_at":"2026-09-07T19:00:17.218Z","repository":{"id":41961453,"uuid":"476341040","full_name":"thefuga/go-collections","owner":"thefuga","description":"Blazingly fast Collections package. Inspired by Laravel, written in Go.","archived":false,"fork":false,"pushed_at":"2024-02-12T05:37:31.000Z","size":213,"stargazers_count":26,"open_issues_count":11,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-08-19T01:07:40.777Z","etag":null,"topics":["collections","functional","generics","go","golang","laravel","lists","lodash","maps","slices"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thefuga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support_test.go","governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-03-31T14:25:26.000Z","updated_at":"2025-11-28T11:32:12.000Z","dependencies_parsed_at":"2024-02-03T23:36:43.988Z","dependency_job_id":"43db70c3-49c2-468b-b4cb-2d0441cb7e2f","html_url":"https://github.com/thefuga/go-collections","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/thefuga/go-collections","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefuga%2Fgo-collections","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefuga%2Fgo-collections/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefuga%2Fgo-collections/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefuga%2Fgo-collections/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thefuga","download_url":"https://codeload.github.com/thefuga/go-collections/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefuga%2Fgo-collections/sbom","scorecard":{"id":878552,"data":{"date":"2025-08-11","repo":{"name":"github.com/thefuga/go-collections","commit":"89fb9dc491c28a4669d311dde0bf7d2f2534ae81"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":8,"reason":"Found 21/26 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:101: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:104: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-stage.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/commit-stage.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/thefuga/go-collections/release.yml/main?enable=pin","Info:   0 out of  19 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/commit-stage.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T07:04:33.547Z","repository_id":41961453,"created_at":"2025-08-24T07:04:33.547Z","updated_at":"2025-08-24T07:04:33.547Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37023187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-05T02:00:06.064Z","response_time":108,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-13T13:59:59.296Z","updated_at":"2026-09-07T19:00:17.219Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Available types and methods","Overview"],"sub_categories":["Generic","Slice collection","Key/Value collection","Why?"],"readme":"![version](https://img.shields.io/github/go-mod/go-version/thefuga/go-collections) [![Go Reference](https://pkg.go.dev/badge/github.com/thefuga/go-collections/.svg)](https://pkg.go.dev/github.com/thefuga/go-collections/) ![commit stage](https://github.com/thefuga/go-collections/actions/workflows/commit-stage.yml/badge.svg) [![Go Report Card](https://goreportcard.com/badge/github.com/thefuga/go-collections)](https://goreportcard.com/report/github.com/thefuga/go-collections) [![codecov](https://codecov.io/gh/thefuga/go-collections/branch/main/graph/badge.svg?token=E2TNB1LQQJ)](https://codecov.io/gh/thefuga/go-collections) ![issues](https://img.shields.io/github/issues/thefuga/go-collections)\n------\n# Collections\nBlazingly fast Collections package. Inspired by [Laravel](https://laravel.com/docs/9.x/collections), written in Go.\n\n## Overview\n[go-collections](https://github.com/thefuga/go-collections) offers a variety of methods and types to be used with slices and maps.\nInitially, its interface was based on Laravel Collections, but many more methods and functionalities will be added.\n\nThis package is still under development, there might be breaking changes introduced. Use with caution!\n\nPull requests are welcome. See [Contributing](https://github.com/thefuga/go-collections#Contributing)\n\n### Generic functions\nThere are just functions with a slice type parameter to help the usage of slices. The main disadvantage here is the lack of piping.\n\n```go\nfunc genericFunction() {\n\tEach(\n\t\tfunc(_, v int) {\n\t\t\tfmt.Println(v) // 2, 3, 4, 5\n\t\t},\n\t\tMap(\n\t\t\tfunc(_, v int) int {\n\t\t\t\tfmt.Println(v) // 1, 2, 3, 4\n\t\t\t\treturn v + 1\n\t\t\t},\n\t\t\t[]int{1, 2, 3, 4},\n\t\t),\n\t)\n}\n```\n\n### Slice collection\nSlice collection is a custom slice type with embedded methods. Most of the available methods here are just calls to the base generic functions, with the advantage of piping calls instead of nesting functions.\n\n```go\nfunc sliceCollection() {\n\tCollect(1, 2, 3, 4).\n\t\tMap(func(_, v int) int {\n\t\t\tfmt.Println(v) // 1, 2, 3, 4\n\t\t\treturn v + 1\n\t\t}).\n\t\tEach(func(_, v int) {\n\t\t\tfmt.Println(v) // 2, 3, 4, 5\n\t\t})\n}\n```\n\n### KV (map) collections\nThe KV collection is a bit more complex. It uses composed of two structs: the map, holding the keys and values, and a slice of keys, used to enable the collection to be ordered in any way needed by the user. This is important due to the lack of ordering on Go maps. The usage is similar to the Slice collection, with the ability to add comparable keys.\n```go\nfunc mapCollection() {\n\tCollectMap(map[string]int{\"a\": 1, \"b\": 2, \"c\": 3, \"d\": 4}).\n\t\tSort(collections.Asc[int]()).\n\t\tMap(func(k string, v int) int {\n\t\t\tfmt.Printf(\"%s: %v\\n\", k, v) // a: 1, b: 2, c: 3, d: 4\n\t\t\treturn v + 1\n\t\t}).\n\t\tEach(func(k string, v int) {\n\t\t\tfmt.Printf(\"%s: %v\\n\", k, v) // a: 2, b: 3, c: 4, d: 5\n\t\t})\n}\n```\n\n### Why?\nBefore type parameters (aka generics), Go lacked a way to do even trivial collection stuff without cumbersome boilerplate.\nAfter 1.18 was released, a myriad of possibilities was open. There are many available options right now, such as the awesome [samber/lo](https://github.com/samber/lo).\nThat said, none of the available options were what we (i.e. maintainers of this package) were looking for... So go-collection was born.\nThe aim is to not only offer generic methods to be used with slices and maps but also offer custom types to manage collections in a pipeable fashion.\n\n### Major goals\nThe major goals for this package are:\n\n- offer a good, clear interface to interact with slices and maps\n- use no external dependencies\n- good resource usage without micro-optimizations - this is not intended to be used by real-time or performance critical applications\n\n### Limitations\nSome of the methods available on the Laravel Collections are - by design - impossible to be implemented in Go.\nThese methods were either adapted to be used in a way that made sense, or ignored completely.\n\n## Available types and methods\nThe complete reference of all types and their documentation is listed in their respective godoc.\nBelow is a quick reference for each one of them.\n### Generic\n**Types**\n- [Float](https://pkg.go.dev/github.com/thefuga/go-collections#Float)\n- [Integer](https://pkg.go.dev/github.com/thefuga/go-collections#Integer)\n- [Matcher](https://pkg.go.dev/github.com/thefuga/go-collections#Matcher)\n- [Number](https://pkg.go.dev/github.com/thefuga/go-collections#Number)\n- [Relational](https://pkg.go.dev/github.com/thefuga/go-collections#Relational)\n- [SignedInteger](https://pkg.go.dev/github.com/thefuga/go-collections#SignedInteger)\n- [UnsignedInteger](https://pkg.go.dev/github.com/thefuga/go-collections#UnsignedInteger)\n\n**Functions**\n- [Asc](https://pkg.go.dev/github.com/thefuga/go-collections#Asc)\n- [Average](https://pkg.go.dev/github.com/thefuga/go-collections#Average)\n- [AverageE](https://pkg.go.dev/github.com/thefuga/go-collections#AverageE)\n- [Copy](https://pkg.go.dev/github.com/thefuga/go-collections#Copy)\n- [Cut](https://pkg.go.dev/github.com/thefuga/go-collections#Cut)\n- [CutE](https://pkg.go.dev/github.com/thefuga/go-collections#CutE)\n- [Delete](https://pkg.go.dev/github.com/thefuga/go-collections#Delete)\n- [Desc](https://pkg.go.dev/github.com/thefuga/go-collections#Desc)\n- [Each](https://pkg.go.dev/github.com/thefuga/go-collections#Each)\n- [First](https://pkg.go.dev/github.com/thefuga/go-collections#First)\n- [FirstE](https://pkg.go.dev/github.com/thefuga/go-collections#FirstE)\n- [Get](https://pkg.go.dev/github.com/thefuga/go-collections#Get)\n- [GetE](https://pkg.go.dev/github.com/thefuga/go-collections#GetE)\n- [Last](https://pkg.go.dev/github.com/thefuga/go-collections#Last)\n- [LastE](https://pkg.go.dev/github.com/thefuga/go-collections#LastE)\n- [Map](https://pkg.go.dev/github.com/thefuga/go-collections#Map)\n- [Max](https://pkg.go.dev/github.com/thefuga/go-collections#Max)\n- [MaxE](https://pkg.go.dev/github.com/thefuga/go-collections#MaxE)\n- [Median](https://pkg.go.dev/github.com/thefuga/go-collections#Median)\n- [Min](https://pkg.go.dev/github.com/thefuga/go-collections#Min)\n- [MinE](https://pkg.go.dev/github.com/thefuga/go-collections#MinE)\n- [Pop](https://pkg.go.dev/github.com/thefuga/go-collections#Pop)\n- [PopE](https://pkg.go.dev/github.com/thefuga/go-collections#PopE)\n- [Push](https://pkg.go.dev/github.com/thefuga/go-collections#Push)\n- [Put](https://pkg.go.dev/github.com/thefuga/go-collections#Put)\n- [Search](https://pkg.go.dev/github.com/thefuga/go-collections#Search)\n- [SearchE](https://pkg.go.dev/github.com/thefuga/go-collections#SearchE)\n- [Sort](https://pkg.go.dev/github.com/thefuga/go-collections#Sort)\n- [Sum](https://pkg.go.dev/github.com/thefuga/go-collections#Sum)\n### Slice collection\nMost methods of the slice collection are just calls to the generic functions passing the collection as the slice argument and returning the result to allow piping.\nIn addition, some methods are available:\n- [Collect](https://pkg.go.dev/github.com/thefuga/go-collections/slice#Collect)\n- [Collection](https://pkg.go.dev/github.com/thefuga/go-collections/slice#Collection)\n  - [Capacity](https://pkg.go.dev/github.com/thefuga/go-collections/slice#Collection.Capacity)\n  - [Count](https://pkg.go.dev/github.com/thefuga/go-collections/slice#Collection.Count)\n  - [IsEmpty](https://pkg.go.dev/github.com/thefuga/go-collections/slice#Collection.IsEmpty)\n  - [Tap](https://pkg.go.dev/github.com/thefuga/go-collections/slice#Collection.Tap)\n\n### Key/Value collection\n#### Generic\n- [Assert](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Assert)\n- [AssertE](https://pkg.go.dev/github.com/thefuga/go-collections/kv#AssertE)\n- [CountBy](https://pkg.go.dev/github.com/thefuga/go-collections/kv#CountBy)\n- [Get](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Get)\n- [Collect](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collect)\n- [CollectMap](https://pkg.go.dev/github.com/thefuga/go-collections/kv#CollectMap)\n- [CollectSlice](https://pkg.go.dev/github.com/thefuga/go-collections/kv#CollectSlice)\n- [Collection](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection)\n  - [Combine](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Combine)\n  - [Concat](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Concat)\n  - [Contains](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Contains)\n  - [Count](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Count)\n  - [Each](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Each)\n  - [Every](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Every)\n  - [Filter](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Filter)\n  - [First](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.First)\n  - [FirstE](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.FirstE)\n  - [FirstOrFail](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.FirstOrFail)\n  - [Flip](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Flip)\n  - [Get](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Get)\n  - [GetE](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.GetE)\n  - [IsEmpty](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.IsEmpty)\n  - [Keys](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Keys)\n  - [Last](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Last)\n  - [LastE](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.LastE)\n  - [Map](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Map)\n  - [Merge](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Merge)\n  - [Only](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Only)\n  - [Pop](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Pop)\n  - [PopE](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.PopE)\n  - [Push](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Push)\n  - [Put](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Put)\n  - [Reject](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Reject)\n  - [Search](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Search)\n  - [SearchE](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.SearchE)\n  - [Sort](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Sort)\n  - [Tap](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Tap)\n  - [ToSlice](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.ToSlice)\n  - [Unless](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.Unless)\n  - [UnlessEmpty](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.UnlessEmpty)\n  - [UnlessNotEmpty](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.UnlessNotEmpty)\n  - [When](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.When)\n  - [WhenEmpty](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.WhenEmpty)\n  - [WhenNotEmpty](https://pkg.go.dev/github.com/thefuga/go-collections/kv#Collection.WhenNotEmpty)\n#### Numeric\nThe numeric collection includes all methods from the generic kv collection and the additional methods listed bellow:\n- [Collect](https://pkg.go.dev/github.com/thefuga/go-collections/kv/numeric#Collect)\n- [Collection](https://pkg.go.dev/github.com/thefuga/go-collections/kv/numeric#Collection)\n  - [Average](https://pkg.go.dev/github.com/thefuga/go-collections/kv/numeric#Collection.Average)\n  - [Max](https://pkg.go.dev/github.com/thefuga/go-collections/kv/numeric#Collection.Max)\n  - [Median](https://pkg.go.dev/github.com/thefuga/go-collections/kv/numeric#Collection.Median)\n  - [Min](https://pkg.go.dev/github.com/thefuga/go-collections/kv/numeric#Collection.Min)\n  - [Sum](https://pkg.go.dev/github.com/thefuga/go-collections/kv/numeric#Collection.Sum)\n\n## Performance\nDespite the main description, this is not supposed to be a blazingly fast repository. Rather, it's intended to offer a good interface without deprecating performance.\nBenchmarks were made comparing the main methods to their respective raw versions using only the native data struct (e.g. slice or map). \nThe full result will always be available as a build artifact of the respective release, but below is some of the main methods compared.\n\n### Benchmarks\nTODO\n\n## Contributing\nTODO\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/thefuga%2Fgo-collections/projects"}