1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-15 02:02:27 +08:00

docs: update slice.doc

This commit is contained in:
dudaodong
2022-02-18 11:05:14 +08:00
parent df098392c2
commit 2e8834a2c1
2 changed files with 101 additions and 104 deletions

View File

@@ -28,7 +28,7 @@ import (
- [Count](#Count) - [Count](#Count)
- [Difference](#Difference) - [Difference](#Difference)
- [DifferenceBy](#DifferenceBy) - [DifferenceBy](#DifferenceBy)
- [DeleteByIndex](#DeleteByIndex) - [DeleteAt](#DeleteAt)
- [Drop](#Drop) - [Drop](#Drop)
- [Every](#Every) - [Every](#Every)
- [Filter](#Filter) - [Filter](#Filter)
@@ -41,9 +41,9 @@ import (
- [IntSlice](#IntSlice) - [IntSlice](#IntSlice)
- [InterfaceSlice](#InterfaceSlice) - [InterfaceSlice](#InterfaceSlice)
- [Intersection](#Intersection) - [Intersection](#Intersection)
- [InsertByIndex](#InsertByIndex) - [InsertAt](#InsertAt)
- [Map](#Map) - [Map](#Map)
- [ReverseSlice](#ReverseSlice) - [Reverse](#Reverse)
- [Reduce](#Reduce) - [Reduce](#Reduce)
- [Shuffle](#Shuffle) - [Shuffle](#Shuffle)
- [SortByField](#SortByField) - [SortByField](#SortByField)
@@ -51,23 +51,20 @@ import (
- [StringSlice](#StringSlice) - [StringSlice](#StringSlice)
- [Unique](#Unique) - [Unique](#Unique)
- [Union](#Union) - [Union](#Union)
- [UpdateByIndex](#UpdateByIndex) - [UpdateAt](#UpdateAt)
- [Without](#Without) - [Without](#Without)
<div STYLE="page-break-after: always;"></div> <div STYLE="page-break-after: always;"></div>
## Documentation ## Documentation
## Note:
1. param which type is interface{} in below functions should be slice.
### <span id="Contain">Contain</span> ### <span id="Contain">Contain</span>
<p>Check if the value is in the slice or not. iterableType param can be string, map or slice.</p> <p>Check if the value is in the slice or not.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Contain(iterableType interface{}, value interface{}) bool func Contain[T any](slice []T, value T) bool
``` ```
<b>Example:</b> <b>Example:</b>
@@ -90,7 +87,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func ContainSubSlice(slice interface{}, subslice interface{}) bool func ContainSubSlice[T any](slice, subslice []T) bool
``` ```
<b>Example:</b> <b>Example:</b>
@@ -115,7 +112,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Chunk(slice []interface{}, size int) [][]interface{} func Chunk[T any](slice []T, size int) [][]T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -140,7 +137,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Compact(slice interface{}) interface{} func Compact[T any](slice []T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -163,7 +160,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Concat(slice interface{}, values ...interface{}) interface{} func Concat[T any](slice []T, values ...[]T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -185,12 +182,12 @@ func main() {
### <span id="Count">Count</span> ### <span id="Count">Count</span>
<p>Count iterates over elements of slice, returns a count of all matched elements. The function signature should be func(index int, value interface{}) bool.</p> <p>Count iterates over elements of slice, returns a count of all matched elements.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Count(slice, function interface{}) int func Count[T any](slice []T, predicate func(index int, t T) bool) int
``` ```
<b>Example:</b> <b>Example:</b>
@@ -220,7 +217,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Difference(slice1, slice2 interface{}) interface{} func Difference[T comparable](slice, comparedSlice []T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -248,7 +245,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func DifferenceBy(slice interface{}, comparedSlice interface{}, iterateeFn interface{}) interface{} func DifferenceBy[T any](slice []T, comparedSlice []T, iteratee func(index int, t T) T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -273,13 +270,13 @@ func main() {
### <span id="DeleteByIndex">DeleteByIndex</span> ### <span id="DeleteAt">DeleteAt</span>
<p>Delete the element of slice from start index to end index - 1.</p> <p>Delete the element of slice from start index to end index - 1.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func DeleteByIndex(slice interface{}, start int, end ...int) (interface{}, error) func DeleteAt[T any](slice []T, start int, end ...int)
``` ```
<b>Example:</b> <b>Example:</b>
@@ -290,10 +287,10 @@ import (
) )
func main() { func main() {
res1 := slice.DeleteByIndex([]string{"a", "b", "c", "d", "e"}, 3) res1 := slice.DeleteAt([]string{"a", "b", "c", "d", "e"}, 3)
fmt.Println(res1) //[]string{"a", "b", "c", "e"} fmt.Println(res1) //[]string{"a", "b", "c", "e"}
res2 := slice.DeleteByIndex([]string{"a", "b", "c", "d", "e"}, 0, 2) res2 := slice.DeleteAt([]string{"a", "b", "c", "d", "e"}, 0, 2)
fmt.Println(res2) //[]string{"c", "d", "e"} fmt.Println(res2) //[]string{"c", "d", "e"}
} }
@@ -308,7 +305,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Drop(slice interface{}, n int) interface{} func Drop[T any](slice []T, n int) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -334,12 +331,12 @@ func main() {
### <span id="Every">Every</span> ### <span id="Every">Every</span>
<p>Return true if all of the values in the slice pass the predicate function. The function signature should be func(index int, value interface{}) bool.</p> <p>Return true if all of the values in the slice pass the predicate function.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Every(slice, function interface{}) bool func Every[T any](slice []T, predicate func(index int, t T) bool) bool
``` ```
<b>Example:</b> <b>Example:</b>
@@ -364,12 +361,12 @@ func main() {
### <span id="Filter">Filter</span> ### <span id="Filter">Filter</span>
<p>Return all elements which match the function. Function signature should be func(index int, value interface{}) bool.</p> <p>Return all elements which match the function.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Filter(slice, function interface{}) interface{} func Filter[T any](slice []T, predicate func(index int, t T) bool) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -393,12 +390,12 @@ func main() {
### <span id="Find">Find</span> ### <span id="Find">Find</span>
<p>Iterates over elements of slice, returning the first one that passes a truth test on function.function signature should be func(index int, value interface{}) bool.</p> <p>Iterates over elements of slice, returning the first one that passes a truth test on function.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Find(slice, function interface{}) (interface{}, bool) func Find[T any](slice []T, predicate func(index int, t T) bool) (*T, bool)
``` ```
<b>Example:</b> <b>Example:</b>
@@ -424,12 +421,12 @@ func main() {
### <span id="FindLast">FindLast</span> ### <span id="FindLast">FindLast</span>
<p>iterates over elements of slice from end to begin, returning the last one that passes a truth test on function. The function signature should be func(index int, value interface{}) bool.</p> <p>iterates over elements of slice from end to begin, returning the last one that passes a truth test on function.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func FindLast(slice, function interface{}) (interface{}, bool) func FindLast[T any](slice []T, predicate func(index int, t T) bool) (*T, bool)
``` ```
<b>Example:</b> <b>Example:</b>
@@ -481,12 +478,12 @@ func main() {
### <span id="ForEach">ForEach</span> ### <span id="ForEach">ForEach</span>
<p>Iterates over elements of slice and invokes function for each element, function signature should be func(index int, value interface{}).</p> <p>Iterates over elements of slice and invokes function for each element.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func ForEach(slice, function interface{}) func ForEach[T any](slice []T, iteratee func(index int, t T))
``` ```
<b>Example:</b> <b>Example:</b>
@@ -510,12 +507,12 @@ func main() {
### <span id="GroupBy">GroupBy</span> ### <span id="GroupBy">GroupBy</span>
<p>Iterates over elements of the slice, each element will be group by criteria, returns two slices. The function signature should be func(index int, value interface{}) bool.</p> <p>Iterates over elements of the slice, each element will be group by criteria, returns two slices.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func GroupBy(slice, function interface{}) (interface{}, interface{}) func GroupBy[T any](slice []T, groupFn func(index int, t T) bool) ([]T, []T)
``` ```
<b>Example:</b> <b>Example:</b>
@@ -598,7 +595,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Intersection(slices ...interface{}) interface{} func Intersection[T any](slices ...[]T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -620,13 +617,13 @@ func main() {
### <span id="InsertByIndex">InsertByIndex</span> ### <span id="InsertAt">InsertAt</span>
<p>insert the element into slice at index.</p> <p>insert the element into slice at index.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func InsertByIndex(slice interface{}, index int, value interface{}) (interface{}, error) func InsertAt[T any](slice []T, index int, value interface{}) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -639,10 +636,10 @@ import (
func main() { func main() {
s := []string{"a", "b", "c"} s := []string{"a", "b", "c"}
res1, _ := slice.InsertByIndex(s, 0, "1") res1, _ := slice.InsertAt(s, 0, "1")
fmt.Println(res1) //[]string{"1", "a", "b", "c"} fmt.Println(res1) //[]string{"1", "a", "b", "c"}
res2, _ := slice.InsertByIndex(s, 3, []string{"1", "2", "3"}) res2, _ := slice.InsertAt(s, 3, []string{"1", "2", "3"})
fmt.Println(res2) //[]string{"a", "b", "c", "1", "2", "3"} fmt.Println(res2) //[]string{"a", "b", "c", "1", "2", "3"}
} }
``` ```
@@ -651,12 +648,12 @@ func main() {
### <span id="Map">Map</span> ### <span id="Map">Map</span>
<p>Creates an slice of values by running each element in slice thru function, function signature should be func(index int, value interface{}) interface{}.</p> <p>Creates an slice of values by running each element in slice thru function.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Map(slice, function interface{}) interface{} func Map[T any, U any](slice []T, iteratee func(index int, t T) U) []U
``` ```
<b>Example:</b> <b>Example:</b>
@@ -679,13 +676,13 @@ func main() {
### <span id="ReverseSlice">ReverseSlice</span> ### <span id="Reverse">Reverse</span>
<p>Reverse the elements order in slice.</p> <p>Reverse the elements order in slice.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func ReverseSlice(slice interface{}) func Reverse[T any](slice []T)
``` ```
<b>Example:</b> <b>Example:</b>
@@ -697,7 +694,7 @@ import (
func main() { func main() {
nums := []int{1, 2, 3, 4} nums := []int{1, 2, 3, 4}
slice.ReverseSlice(nums) slice.Reverse(nums)
fmt.Println(res) //[]int{4, 3, 2, 1} fmt.Println(res) //[]int{4, 3, 2, 1}
} }
``` ```
@@ -705,12 +702,12 @@ func main() {
### <span id="Reduce">Reduce</span> ### <span id="Reduce">Reduce</span>
<p>Reduce slice, function signature should be func(index int, value1, value2 interface{}) interface{}.</p> <p>Reduce slice.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Reduce(slice, function, zero interface{}) interface{} func Reduce[T any](slice []T, iteratee func(index int, t1, t2 T) T, initial T) T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -739,7 +736,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Shuffle(slice interface{}) interface{} func Shuffle[T any](slice []T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -802,12 +799,12 @@ func main() {
### <span id="Some">Some</span> ### <span id="Some">Some</span>
<p>Return true if any of the values in the list pass the predicate function, function signature should be func(index int, value interface{}) bool.</p> <p>Return true if any of the values in the list pass the predicate function.</p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Some(slice, function interface{}) bool func Some[T any](slice []T, predicate func(index int, t T) bool) bool
``` ```
<b>Example:</b> <b>Example:</b>
@@ -862,7 +859,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Unique(slice interface{}) interface{} func Unique[T any](slice []T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -886,7 +883,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Union(slices ...interface{}) interface{} func Union[T any](slices ...[]T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -907,13 +904,13 @@ func main() {
### <span id="UpdateByIndex">UpdateByIndex</span> ### <span id="UpdateAt">UpdateAt</span>
<p>Update the slice element at index. if param index < 0 or index >= len(slice), will return error. </p> <p>Update the slice element at index. if param index < 0 or index >= len(slice), will return error. </p>
<b>Signature:</b> <b>Signature:</b>
```go ```go
func UpdateByIndex(slice interface{}, index int, value interface{}) (interface{}, error) func UpdateAt[T any](slice []T, index int, value T) []T
``` ```
<b>Example:</b> <b>Example:</b>
@@ -926,7 +923,7 @@ import (
func main() { func main() {
s := []string{"a", "b", "c"} s := []string{"a", "b", "c"}
res1, _ := slice.UpdateByIndex(s, 0, "1") res1, _ := slice.UpdateAt(s, 0, "1")
fmt.Println(res1) //[]string{"1", "b", "c"} fmt.Println(res1) //[]string{"1", "b", "c"}
} }
``` ```
@@ -940,7 +937,7 @@ func main() {
<b>Signature:</b> <b>Signature:</b>
```go ```go
func Without(slice interface{}, values ...interface{}) interface{} func Without[T any](slice []T, values ...T) []T
``` ```
<b>Example:</b> <b>Example:</b>

View File

@@ -28,7 +28,7 @@ import (
- [Count](#Count) - [Count](#Count)
- [Difference](#Difference) - [Difference](#Difference)
- [DifferenceBy](#DifferenceBy) - [DifferenceBy](#DifferenceBy)
- [DeleteByIndex](#DeleteByIndex) - [DeleteAt](#DeleteAt)
- [Drop](#Drop) - [Drop](#Drop)
- [Every](#Every) - [Every](#Every)
- [Filter](#Filter) - [Filter](#Filter)
@@ -41,9 +41,9 @@ import (
- [IntSlice](#IntSlice) - [IntSlice](#IntSlice)
- [InterfaceSlice](#InterfaceSlice) - [InterfaceSlice](#InterfaceSlice)
- [Intersection](#Intersection) - [Intersection](#Intersection)
- [InsertByIndex](#InsertByIndex) - [InsertAt](#InsertAt)
- [Map](#Map) - [Map](#Map)
- [ReverseSlice](#ReverseSlice) - [Reverse](#Reverse)
- [Reduce](#Reduce) - [Reduce](#Reduce)
- [Shuffle](#Shuffle) - [Shuffle](#Shuffle)
- [SortByField](#SortByField) - [SortByField](#SortByField)
@@ -51,7 +51,7 @@ import (
- [StringSlice](#StringSlice) - [StringSlice](#StringSlice)
- [Unique](#Unique) - [Unique](#Unique)
- [Union](#Union) - [Union](#Union)
- [UpdateByIndex](#UpdateByIndex) - [UpdateAt](#UpdateAt)
- [Without](#Without) - [Without](#Without)
<div STYLE="page-break-after: always;"></div> <div STYLE="page-break-after: always;"></div>
@@ -64,7 +64,7 @@ import (
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Contain(iterableType interface{}, value interface{}) bool func Contain[T any](slice []T, value T) bool
``` ```
<b>例子:</b> <b>例子:</b>
@@ -87,7 +87,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func ContainSubSlice(slice interface{}, subslice interface{}) bool func ContainSubSlice[T any](slice, subslice []T) bool
``` ```
<b>例子:</b> <b>例子:</b>
@@ -112,7 +112,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Chunk(slice []interface{}, size int) [][]interface{} func Chunk[T any](slice []T, size int) [][]T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -137,7 +137,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Compact(slice interface{}) interface{} func Compact[T any](slice []T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -160,7 +160,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Concat(slice interface{}, values ...interface{}) interface{} func Concat[T any](slice []T, values ...[]T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -182,12 +182,12 @@ func main() {
### <span id="Count">Count</span> ### <span id="Count">Count</span>
<p>遍历切片对每个元素执行函数function. 返回符合函数返回值为true的元素的个数函数签名必须是func(index int, value interface{}) bool</p> <p>遍历切片对每个元素执行函数function. 返回符合函数返回值为true的元素的个数</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Count(slice, function interface{}) int func Count[T any](slice []T, predicate func(index int, t T) bool) int
``` ```
<b>例子:</b> <b>例子:</b>
@@ -217,7 +217,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Difference(slice1, slice2 interface{}) interface{} func Difference[T comparable](slice, comparedSlice []T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -245,7 +245,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func DifferenceBy(slice interface{}, comparedSlice interface{}, iterateeFn interface{}) interface{} func DifferenceBy[T any](slice []T, comparedSlice []T, iteratee func(index int, t T) T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -270,13 +270,13 @@ func main() {
### <span id="DeleteByIndex">DeleteByIndex</span> ### <span id="DeleteAt">DeleteAt</span>
<p>删除切片中从开始索引到结束索引-1的元素</p> <p>删除切片中从开始索引到结束索引-1的元素</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func DeleteByIndex(slice interface{}, start int, end ...int) (interface{}, error) func DeleteAt[T any](slice []T, start int, end ...int)
``` ```
<b>例子:</b> <b>例子:</b>
@@ -287,10 +287,10 @@ import (
) )
func main() { func main() {
res1 := slice.DeleteByIndex([]string{"a", "b", "c", "d", "e"}, 3) res1 := slice.DeleteAt([]string{"a", "b", "c", "d", "e"}, 3)
fmt.Println(res1) //[]string{"a", "b", "c", "e"} fmt.Println(res1) //[]string{"a", "b", "c", "e"}
res2 := slice.DeleteByIndex([]string{"a", "b", "c", "d", "e"}, 0, 2) res2 := slice.DeleteAt([]string{"a", "b", "c", "d", "e"}, 0, 2)
fmt.Println(res2) //[]string{"c", "d", "e"} fmt.Println(res2) //[]string{"c", "d", "e"}
} }
@@ -305,7 +305,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Drop(slice interface{}, n int) interface{} func Drop[T any](slice []T, n int) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -336,7 +336,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Every(slice, function interface{}) bool func Every[T any](slice []T, predicate func(index int, t T) bool) bool
``` ```
<b>例子:</b> <b>例子:</b>
@@ -366,7 +366,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Filter(slice, function interface{}) interface{} func Filter[T any](slice []T, predicate func(index int, t T) bool) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -390,12 +390,12 @@ func main() {
### <span id="Find">Find</span> ### <span id="Find">Find</span>
<p>遍历slice的元素返回第一个通过function真值测试的元素。函数签名应该是 func(index int, value interface{}) bool</p> <p>遍历slice的元素返回第一个通过function真值测试的元素</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Find(slice, function interface{}) (interface{}, bool) func Find[T any](slice []T, predicate func(index int, t T) bool) (*T, bool)
``` ```
<b>例子:</b> <b>例子:</b>
@@ -421,12 +421,12 @@ func main() {
### <span id="FindLast">FindLast</span> ### <span id="FindLast">FindLast</span>
<p>从头到尾遍历 slice 的元素,返回最后一个通过函数真值测试的元素。 函数签名应该是 func(index int, value interface{}) bool。</p> <p>从头到尾遍历 slice 的元素,返回最后一个通过函数真值测试的元素。</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func FindLast(slice, function interface{}) (interface{}, bool) func FindLast[T any](slice []T, predicate func(index int, t T) bool) (*T, bool)
``` ```
<b>例子:</b> <b>例子:</b>
@@ -478,12 +478,12 @@ func main() {
### <span id="ForEach">ForEach</span> ### <span id="ForEach">ForEach</span>
<p>遍历slice的元素并为每个元素调用函数函数签名应该是func(index int, value interface{})</p> <p>遍历slice的元素并为每个元素调用函数</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func ForEach(slice, function interface{}) func ForEach[T any](slice []T, iteratee func(index int, t T))
``` ```
<b>例子:</b> <b>例子:</b>
@@ -507,12 +507,12 @@ func main() {
### <span id="GroupBy">GroupBy</span> ### <span id="GroupBy">GroupBy</span>
<p>迭代切片的元素,每个元素将按条件分组,返回两个切片。 函数签名应该是func(index int, value interface{}) bool</p> <p>迭代切片的元素,每个元素将按条件分组,返回两个切片</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func GroupBy(slice, function interface{}) (interface{}, interface{}) func GroupBy[T any](slice []T, groupFn func(index int, t T) bool) ([]T, []T)
``` ```
<b>例子:</b> <b>例子:</b>
@@ -595,7 +595,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Intersection(slices ...interface{}) interface{} func Intersection[T any](slices ...[]T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -617,13 +617,13 @@ func main() {
### <span id="InsertByIndex">InsertByIndex</span> ### <span id="InsertAt">InsertAt</span>
<p>将元素插入到索引处的切片中</p> <p>将元素插入到索引处的切片中</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func InsertByIndex(slice interface{}, index int, value interface{}) (interface{}, error) func InsertAt[T any](slice []T, index int, value interface{}) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -636,10 +636,10 @@ import (
func main() { func main() {
s := []string{"a", "b", "c"} s := []string{"a", "b", "c"}
res1, _ := slice.InsertByIndex(s, 0, "1") res1, _ := slice.InsertAt(s, 0, "1")
fmt.Println(res1) //[]string{"1", "a", "b", "c"} fmt.Println(res1) //[]string{"1", "a", "b", "c"}
res2, _ := slice.InsertByIndex(s, 3, []string{"1", "2", "3"}) res2, _ := slice.InsertAt(s, 3, []string{"1", "2", "3"})
fmt.Println(res2) //[]string{"a", "b", "c", "1", "2", "3"} fmt.Println(res2) //[]string{"a", "b", "c", "1", "2", "3"}
} }
``` ```
@@ -648,12 +648,12 @@ func main() {
### <span id="Map">Map</span> ### <span id="Map">Map</span>
<p>通过运行函数slice中的每个元素来创建一个切片函数签名应该是func(index int, value interface{}) interface{}。</p> <p>通过运行函数slice中的每个元素来创建一个切片</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Map(slice, function interface{}) interface{} func Map[T any, U any](slice []T, iteratee func(index int, t T) U) []U
``` ```
<b>例子:</b> <b>例子:</b>
@@ -676,13 +676,13 @@ func main() {
### <span id="ReverseSlice">ReverseSlice</span> ### <span id="Reverse">Reverse</span>
<p>反转切片中的元素顺序</p> <p>反转切片中的元素顺序</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func ReverseSlice(slice interface{}) func Reverse[T any](slice []T)
``` ```
<b>例子:</b> <b>例子:</b>
@@ -694,7 +694,7 @@ import (
func main() { func main() {
nums := []int{1, 2, 3, 4} nums := []int{1, 2, 3, 4}
slice.ReverseSlice(nums) slice.Reverse(nums)
fmt.Println(res) //[]int{4, 3, 2, 1} fmt.Println(res) //[]int{4, 3, 2, 1}
} }
``` ```
@@ -702,12 +702,12 @@ func main() {
### <span id="Reduce">Reduce</span> ### <span id="Reduce">Reduce</span>
<p>将slice中的元素运行函数返回运行结果。函数签名应该是func(index int, value1, value2 interface{}) interface{}。</p> <p>将slice中的元素依次运行函数,返回运行结果</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Reduce(slice, function, zero interface{}) interface{} func Reduce[T any](slice []T, iteratee func(index int, t1, t2 T) T, initial T) T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -736,7 +736,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Shuffle(slice interface{}) interface{} func Shuffle[T any](slice []T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -799,12 +799,12 @@ func main() {
### <span id="Some">Some</span> ### <span id="Some">Some</span>
<p>如果列表中的任何值通过谓词函数则返回true函数签名应该是func(index int, value interface{}) bool .</p> <p>如果列表中的任何值通过谓词函数则返回true</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Some(slice, function interface{}) bool func Some[T any](slice []T, predicate func(index int, t T) bool) bool
``` ```
<b>例子:</b> <b>例子:</b>
@@ -859,7 +859,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Unique(slice interface{}) interface{} func Unique[T any](slice []T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -883,7 +883,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Union(slices ...interface{}) interface{} func Union[T any](slices ...[]T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -904,13 +904,13 @@ func main() {
### <span id="UpdateByIndex">UpdateByIndex</span> ### <span id="UpdateAt">UpdateAt</span>
<p>更新索引处的切片元素。 如果 param index < 0 或 index >= len(slice),将返回错误</p> <p>更新索引处的切片元素。 如果 param index < 0 或 index >= len(slice),将返回错误</p>
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func UpdateByIndex(slice interface{}, index int, value interface{}) (interface{}, error) func UpdateAt[T any](slice []T, index int, value T) []T
``` ```
<b>例子:</b> <b>例子:</b>
@@ -923,7 +923,7 @@ import (
func main() { func main() {
s := []string{"a", "b", "c"} s := []string{"a", "b", "c"}
res1, _ := slice.UpdateByIndex(s, 0, "1") res1, _ := slice.UpdateAt(s, 0, "1")
fmt.Println(res1) //[]string{"1", "b", "c"} fmt.Println(res1) //[]string{"1", "b", "c"}
} }
``` ```
@@ -937,7 +937,7 @@ func main() {
<b>函数签名:</b> <b>函数签名:</b>
```go ```go
func Without(slice interface{}, values ...interface{}) interface{} func Without[T any](slice []T, values ...T) []T
``` ```
<b>例子:</b> <b>例子:</b>