{"id":27880862,"url":"https://github.com/atomicgo/list","last_synced_at":"2025-05-05T04:38:55.293Z","repository":{"id":61627815,"uuid":"548068909","full_name":"atomicgo/list","owner":"atomicgo","description":"📝 A generic list implementation in Go for easy functional programming","archived":false,"fork":false,"pushed_at":"2024-08-08T17:04:26.000Z","size":59,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-09T02:09:19.258Z","etag":null,"topics":["array","atomicgo","generic","go","golang","golang-library","list"],"latest_commit_sha":null,"homepage":"https://atomicgo.dev","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/atomicgo.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":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["MarvinJWendt"]}},"created_at":"2022-10-08T21:42:00.000Z","updated_at":"2024-10-05T04:43:13.000Z","dependencies_parsed_at":"2024-06-20T10:23:14.246Z","dependency_job_id":"c0d87316-b20f-42eb-b13f-2d0c01f4e3fd","html_url":"https://github.com/atomicgo/list","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":"atomicgo/template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Flist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Flist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Flist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicgo%2Flist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atomicgo","download_url":"https://codeload.github.com/atomicgo/list/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252442480,"owners_count":21748448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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"}},"keywords":["array","atomicgo","generic","go","golang","golang-library","list"],"created_at":"2025-05-05T04:38:53.976Z","updated_at":"2025-05-05T04:38:55.285Z","avatar_url":"https://github.com/atomicgo.png","language":"Go","funding_links":["https://github.com/sponsors/MarvinJWendt"],"categories":[],"sub_categories":[],"readme":"\u003c!--\n\n\n\n┌───────────────────────────────────────────────────────────────────┐\n│                                                                   │\n│                          IMPORTANT NOTE                           │\n│                                                                   │\n│               This file is automatically generated                │\n│           All manual modifications will be overwritten            │\n│                                                                   │\n└───────────────────────────────────────────────────────────────────┘\n\n\n\n--\u003e\n\n\u003ch1 align=\"center\"\u003eAtomicGo | list\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fatomicgo.dev%2Fapi%2Fshields%2Flist\u0026style=flat-square\" alt=\"Downloads\"\u003e\n\n\u003ca href=\"https://github.com/atomicgo/list/releases\"\u003e\n\u003cimg src=\"https://img.shields.io/github/v/release/atomicgo/list?style=flat-square\" alt=\"Latest Release\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/list\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/atomicgo/list/go.yml?style=flat-square\" alt=\"Tests\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/list\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/codecov/c/gh/atomicgo/list?color=magenta\u0026logo=codecov\u0026style=flat-square\" alt=\"Coverage\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://codecov.io/gh/atomicgo/list\"\u003e\n\u003c!-- unittestcount:start --\u003e\u003cimg src=\"https://img.shields.io/badge/Unit_Tests-23-magenta?style=flat-square\" alt=\"Unit test count\"\u003e\u003c!-- unittestcount:end --\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://opensource.org/licenses/MIT\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square\" alt=\"License: MIT\"\u003e\n\u003c/a\u003e\n  \n\u003ca href=\"https://goreportcard.com/report/github.com/atomicgo/list\" target=\"_blank\"\u003e\n\u003cimg src=\"https://goreportcard.com/badge/github.com/atomicgo/list?style=flat-square\" alt=\"Go report\"\u003e\n\u003c/a\u003e   \n\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n\u003cstrong\u003e\u003ca href=\"https://pkg.go.dev/atomicgo.dev/list#section-documentation\" target=\"_blank\"\u003eDocumentation\u003c/a\u003e\u003c/strong\u003e\n|\n\u003cstrong\u003e\u003ca href=\"https://github.com/atomicgo/atomicgo/blob/main/CONTRIBUTING.md\" target=\"_blank\"\u003eContributing\u003c/a\u003e\u003c/strong\u003e\n|\n\u003cstrong\u003e\u003ca href=\"https://github.com/atomicgo/atomicgo/blob/main/CODE_OF_CONDUCT.md\" target=\"_blank\"\u003eCode of Conduct\u003c/a\u003e\u003c/strong\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/atomicgo/atomicgo/main/assets/header.png\" alt=\"AtomicGo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\u003ch3  align=\"center\"\u003e\u003cpre\u003ego get atomicgo.dev/list\u003c/pre\u003e\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/p\u003e\n\n\u003c!-- gomarkdoc:embed:start --\u003e\n\n\u003c!-- Code generated by gomarkdoc. DO NOT EDIT --\u003e\n\n# list\n\n```go\nimport \"atomicgo.dev/list\"\n```\n\nPackage list implements a generic list. It is a wrapper around a slice and has multiple useful methods. It can be used to develop in a functional style, but it is not required. The main purpose of this package is, to make working with slices easier. The package supports sorting, shuffling, filtering, mapping, appending, prepending, removing, inserting and more.\n\n## Index\n\n- [type List](\u003c#List\u003e)\n  - [func SliceToList\\[T any\\]\\(items \\[\\]T\\) List\\[T\\]](\u003c#SliceToList\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Append\\(items ...T\\) \\*List\\[T\\]](\u003c#List[T].Append\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Clear\\(\\) \\*List\\[T\\]](\u003c#List[T].Clear\u003e)\n  - [func \\(l List\\[T\\]\\) Contains\\(item T\\) bool](\u003c#List[T].Contains\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Copy\\(\\) \\*List\\[T\\]](\u003c#List[T].Copy\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Filter\\(f func\\(T\\) bool\\) \\*List\\[T\\]](\u003c#List[T].Filter\u003e)\n  - [func \\(l List\\[T\\]\\) ForEach\\(f func\\(T\\)\\)](\u003c#List[T].ForEach\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Get\\(i int\\) T](\u003c#List[T].Get\u003e)\n  - [func \\(l List\\[T\\]\\) IndexOf\\(item T\\) int](\u003c#List[T].IndexOf\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Insert\\(i int, items ...T\\) \\*List\\[T\\]](\u003c#List[T].Insert\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Len\\(\\) int](\u003c#List[T].Len\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Map\\(f func\\(T\\) T\\) \\*List\\[T\\]](\u003c#List[T].Map\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Prepend\\(items ...T\\) \\*List\\[T\\]](\u003c#List[T].Prepend\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Reduce\\(f func\\(T, T\\) T\\) T](\u003c#List[T].Reduce\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Remove\\(i int\\) \\*List\\[T\\]](\u003c#List[T].Remove\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Reverse\\(\\) \\*List\\[T\\]](\u003c#List[T].Reverse\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Set\\(i int, item T\\) \\*List\\[T\\]](\u003c#List[T].Set\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Shuffle\\(\\) \\*List\\[T\\]](\u003c#List[T].Shuffle\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Slice\\(\\) \\[\\]T](\u003c#List[T].Slice\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Sort\\(f func\\(T, T\\) bool\\) \\*List\\[T\\]](\u003c#List[T].Sort\u003e)\n  - [func \\(l List\\[T\\]\\) String\\(\\) string](\u003c#List[T].String\u003e)\n  - [func \\(l \\*List\\[T\\]\\) Swap\\(i, j int\\) \\*List\\[T\\]](\u003c#List[T].Swap\u003e)\n\n\n\u003ca name=\"List\"\u003e\u003c/a\u003e\n## type [List](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L11-L13\u003e)\n\nList is a generic list type.\n\n```go\ntype List[T any] struct {\n    // contains filtered or unexported fields\n}\n```\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tl.Map(func(s string) string {\n\t\treturn s + \"!\"\n\t}).Filter(func(s string) bool {\n\t\treturn !strings.Contains(s, \"b\")\n\t})\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a! c!]\n```\n\n\n\n\u003ca name=\"SliceToList\"\u003e\u003c/a\u003e\n### func [SliceToList](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L16\u003e)\n\n```go\nfunc SliceToList[T any](items []T) List[T]\n```\n\nSliceToList converts a slice to a list.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tl := list.SliceToList([]string{\"a\", \"b\", \"c\"})\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a b c]\n```\n\n\n\n\u003ca name=\"List[T].Append\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Append](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L37\u003e)\n\n```go\nfunc (l *List[T]) Append(items ...T) *List[T]\n```\n\nAppend adds items to the end of list.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a b c]\n```\n\n\n\n\u003ca name=\"List[T].Clear\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Clear](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L141\u003e)\n\n```go\nfunc (l *List[T]) Clear() *List[T]\n```\n\nClear removes all items from the list.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.Clear()\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[]\n```\n\n\n\n\u003ca name=\"List[T].Contains\"\u003e\u003c/a\u003e\n### func \\(List\\[T\\]\\) [Contains](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L109\u003e)\n\n```go\nfunc (l List[T]) Contains(item T) bool\n```\n\nContains returns true if the list contains the given item.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tfmt.Println(l.Contains(\"b\"))\n}\n```\n\n#### Output\n\n```\ntrue\n```\n\n\n\n\u003ca name=\"List[T].Copy\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Copy](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L148\u003e)\n\n```go\nfunc (l *List[T]) Copy() *List[T]\n```\n\nCopy returns a new copy of the list. Useful when you want to modify a list without modifying the original.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tfmt.Println(l.Append(\"appended\"))         // Overwrites the original list\n\tfmt.Println(l.Copy().Append(\"appended1\")) // Does not overwrite the original list\n\tfmt.Println(l.Copy().Append(\"appended2\")) // Does not overwrite the original list\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a b c appended]\n[a b c appended appended1]\n[a b c appended appended2]\n[a b c appended]\n```\n\n\n\n\u003ca name=\"List[T].Filter\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Filter](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L74\u003e)\n\n```go\nfunc (l *List[T]) Filter(f func(T) bool) *List[T]\n```\n\nFilter removes all items from the list that do not match the given predicate.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tl.Filter(func(s string) bool {\n\t\treturn s != \"b\"\n\t})\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a c]\n```\n\n\n\n\u003ca name=\"List[T].ForEach\"\u003e\u003c/a\u003e\n### func \\(List\\[T\\]\\) [ForEach](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L102\u003e)\n\n```go\nfunc (l List[T]) ForEach(f func(T))\n```\n\nForEach iterates over the list and calls the given function for each item.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.ForEach(func(s string) {\n\t\tfmt.Println(s)\n\t})\n}\n```\n\n#### Output\n\n```\na\nb\nc\n```\n\n\n\n\u003ca name=\"List[T].Get\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Get](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L26\u003e)\n\n```go\nfunc (l *List[T]) Get(i int) T\n```\n\nGet returns the item at the given index.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tfmt.Println(l.Get(1))\n}\n```\n\n#### Output\n\n```\nb\n```\n\n\n\n\u003ca name=\"List[T].IndexOf\"\u003e\u003c/a\u003e\n### func \\(List\\[T\\]\\) [IndexOf](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L120\u003e)\n\n```go\nfunc (l List[T]) IndexOf(item T) int\n```\n\nIndexOf returns the index of the first occurrence of the given item.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tfmt.Println(l.IndexOf(\"b\"))\n}\n```\n\n#### Output\n\n```\n1\n```\n\n\n\n\u003ca name=\"List[T].Insert\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Insert](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L54\u003e)\n\n```go\nfunc (l *List[T]) Insert(i int, items ...T) *List[T]\n```\n\nInsert adds items at the given index.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.Insert(1, \"inserted\")\n\tfmt.Println(l)\n\n\tl.Insert(0, \"a\", \"b\", \"c\")\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a inserted b c]\n[a b c a inserted b c]\n```\n\n\n\n\u003ca name=\"List[T].Len\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Len](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L21\u003e)\n\n```go\nfunc (l *List[T]) Len() int\n```\n\nLen returns the length of the list.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tfmt.Println(l.Len())\n}\n```\n\n#### Output\n\n```\n3\n```\n\n\n\n\u003ca name=\"List[T].Map\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Map](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L65\u003e)\n\n```go\nfunc (l *List[T]) Map(f func(T) T) *List[T]\n```\n\nMap overwrites the list with the result of applying the given function to each item.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\").Map(strings.ToUpper)\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[A B C]\n```\n\n\n\n\u003ca name=\"List[T].Prepend\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Prepend](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L43\u003e)\n\n```go\nfunc (l *List[T]) Prepend(items ...T) *List[T]\n```\n\nPrepend adds items to the beginning of list.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.Prepend(\"d\", \"e\", \"f\")\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[d e f a b c]\n```\n\n\n\n\u003ca name=\"List[T].Reduce\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Reduce](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L88\u003e)\n\n```go\nfunc (l *List[T]) Reduce(f func(T, T) T) T\n```\n\nReduce reduces the list to a single value by applying the given function to each item.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[int]\n\n\tl.Append(1, 2, 3)\n\tsum := l.Reduce(func(a, b int) int {\n\t\treturn a + b\n\t})\n\n\tfmt.Println(sum)\n}\n```\n\n#### Output\n\n```\n6\n```\n\n\n\n\u003ca name=\"List[T].Remove\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Remove](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L48\u003e)\n\n```go\nfunc (l *List[T]) Remove(i int) *List[T]\n```\n\nRemove removes the item at the given index.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.Remove(1)\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a c]\n```\n\n\n\n\u003ca name=\"List[T].Reverse\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Reverse](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L131\u003e)\n\n```go\nfunc (l *List[T]) Reverse() *List[T]\n```\n\nReverse reverses the list.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.Reverse()\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[c b a]\n```\n\n\n\n\u003ca name=\"List[T].Set\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Set](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L31\u003e)\n\n```go\nfunc (l *List[T]) Set(i int, item T) *List[T]\n```\n\nSet sets the item at the given index.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.Set(1, \"set\")\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a set c]\n```\n\n\n\n\u003ca name=\"List[T].Shuffle\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Shuffle](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L166\u003e)\n\n```go\nfunc (l *List[T]) Shuffle() *List[T]\n```\n\nShuffle shuffles the list. You need to seed the random number generator yourself.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"math/rand\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\trand.Seed(1337) // You should probably use time.Now().UnixNano() in your code.\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.Shuffle()\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[b a c]\n```\n\n\n\n\u003ca name=\"List[T].Slice\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Slice](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L60\u003e)\n\n```go\nfunc (l *List[T]) Slice() []T\n```\n\nSlice returns the list as a slice.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tfmt.Println(l.Slice())\n}\n```\n\n#### Output\n\n```\n[a b c]\n```\n\n\n\n\u003ca name=\"List[T].Sort\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Sort](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L156\u003e)\n\n```go\nfunc (l *List[T]) Sort(f func(T, T) bool) *List[T]\n```\n\nSort sorts the list using the given function.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[int]\n\n\tl.Append(3, 2, 1)\n\tl.Sort(func(a, b int) bool {\n\t\treturn a \u003c b\n\t})\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[1 2 3]\n```\n\n\n\n\u003ca name=\"List[T].String\"\u003e\u003c/a\u003e\n### func \\(List\\[T\\]\\) [String](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L181\u003e)\n\n```go\nfunc (l List[T]) String() string\n```\n\n\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[a b c]\n```\n\n\n\n\u003ca name=\"List[T].Swap\"\u003e\u003c/a\u003e\n### func \\(\\*List\\[T\\]\\) [Swap](\u003chttps://github.com/atomicgo/list/blob/main/list.go#L176\u003e)\n\n```go\nfunc (l *List[T]) Swap(i, j int) *List[T]\n```\n\nSwap swaps the items at the given indices.\n\n\n\n\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"atomicgo.dev/list\"\n)\n\nfunc main() {\n\tvar l list.List[string]\n\n\tl.Append(\"a\", \"b\", \"c\")\n\tl.Swap(0, 2)\n\n\tfmt.Println(l)\n}\n```\n\n#### Output\n\n```\n[c b a]\n```\n\n\n\nGenerated by [gomarkdoc](\u003chttps://github.com/princjef/gomarkdoc\u003e)\n\n\n\u003c!-- gomarkdoc:embed:end --\u003e\n\n---\n\n\u003e [AtomicGo.dev](https://atomicgo.dev) \u0026nbsp;\u0026middot;\u0026nbsp;\n\u003e with ❤️ by [@MarvinJWendt](https://github.com/MarvinJWendt) |\n\u003e [MarvinJWendt.com](https://marvinjwendt.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomicgo%2Flist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatomicgo%2Flist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomicgo%2Flist/lists"}