From 59b5046a15f85c7ebc861c482417bc85075041be Mon Sep 17 00:00:00 2001 From: dudaodong Date: Wed, 16 Mar 2022 16:59:15 +0800 Subject: [PATCH] docs: update slice.md --- README.md | 9 +++++---- README_zh-CN.md | 9 +++++---- docs/slice.md | 27 +++++++++++++++++++++++++++ docs/slice_zh-CN.md | 29 +++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 749f5d2..3bfec2b 100644 --- a/README.md +++ b/README.md @@ -271,7 +271,8 @@ import "github.com/duke-git/lancet/slice" - [Count](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Count) - [Difference](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Difference) - [DifferenceBy](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DifferenceBy) -- [DeleteByIndex](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DeleteByIndex) +- [DifferenceWith](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DifferenceWith) +- [DeleteAt](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DeleteAt) - [Drop](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Drop) - [Every](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Every) - [Filter](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Filter) @@ -283,9 +284,9 @@ import "github.com/duke-git/lancet/slice" - [IntSlice](https://github.com/duke-git/lancet/blob/main/docs/slice.md#IntSlice) - [InterfaceSlice](https://github.com/duke-git/lancet/blob/main/docs/slice.md#InterfaceSlice) - [Intersection](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Intersection) -- [InsertByIndex](https://github.com/duke-git/lancet/blob/main/docs/slice.md#InsertByIndex) +- [InsertAt](https://github.com/duke-git/lancet/blob/main/docs/slice.md#InsertAt) - [Map](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Map) -- [ReverseSlice](https://github.com/duke-git/lancet/blob/main/docs/slice.md#ReverseSlice) +- [Reverse](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Reverse) - [Reduce](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Reduce) - [Shuffle](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Shuffle) - [SortByField](https://github.com/duke-git/lancet/blob/main/docs/slice.md#SortByField) @@ -293,7 +294,7 @@ import "github.com/duke-git/lancet/slice" - [StringSlice](https://github.com/duke-git/lancet/blob/main/docs/slice.md#StringSlice) - [Unique](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Unique) - [Union](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Union) -- [UpdateByIndex](https://github.com/duke-git/lancet/blob/main/docs/slice.md#UpdateByIndex) +- [UpdateAt](https://github.com/duke-git/lancet/blob/main/docs/slice.md#UpdateAt) - [Without](https://github.com/duke-git/lancet/blob/main/docs/slice.md#Without) ### Strutil package contains some functions to manipulate string. diff --git a/README_zh-CN.md b/README_zh-CN.md index 5fe4c90..8845e53 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -270,7 +270,8 @@ import "github.com/duke-git/lancet/slice" - [Count](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Count) - [Difference](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Difference) - [DifferenceBy](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DifferenceBy) -- [DeleteByIndex](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DeleteByIndex) +- [DifferenceWith](https://github.com/duke-git/lancet/blob/main/docs/slice.md#DifferenceWith) +- [DeleteAt](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#DeleteAt) - [Drop](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Drop) - [Every](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Every) - [Filter](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Filter) @@ -282,9 +283,9 @@ import "github.com/duke-git/lancet/slice" - [IntSlice](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#IntSlice) - [InterfaceSlice](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#InterfaceSlice) - [Intersection](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Intersection) -- [InsertByIndex](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#InsertByIndex) +- [InsertAt](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#InsertAt) - [Map](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Map) -- [ReverseSlice](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#ReverseSlice) +- [Reverse](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Reverse) - [Reduce](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Reduce) - [Shuffle](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Shuffle) - [SortByField](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#SortByField) @@ -292,7 +293,7 @@ import "github.com/duke-git/lancet/slice" - [StringSlice](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#StringSlice) - [Unique](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Unique) - [Union](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Union) -- [UpdateByIndex](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UpdateByIndex) +- [UpdateAt](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#UpdateAt) - [Without](https://github.com/duke-git/lancet/blob/main/docs/slice_zh-CN.md#Without) diff --git a/docs/slice.md b/docs/slice.md index 0192883..c6c4efa 100644 --- a/docs/slice.md +++ b/docs/slice.md @@ -28,6 +28,7 @@ import ( - [Count](#Count) - [Difference](#Difference) - [DifferenceBy](#DifferenceBy) +- [DifferenceWith](#DifferenceWith) - [DeleteAt](#DeleteAt) - [Drop](#Drop) - [Every](#Every) @@ -268,7 +269,33 @@ func main() { ``` +### DifferenceWith +

DifferenceWith accepts comparator which is invoked to compare elements of slice to values. The order and references of result values are determined by the first slice.

+Signature: + +```go +func DifferenceWith[T any](slice []T, comparedSlice []T, comparator func(value, otherValue T) bool) []T +``` +Example: + +```go +import ( + "fmt" + "github.com/duke-git/lancet/slice" +) + +func main() { + s1 := []int{1, 2, 3, 4, 5} + s2 := []int{4, 5, 6, 7, 8} + isDouble := func(v1, v2 int) bool { + return v2 == 2*v1 + } + + res := slice.DifferenceWith(s1, s2, isDouble) + fmt.Println(res) //[]int{1, 5} +} +``` ### DeleteAt

Delete the element of slice from start index to end index - 1.

diff --git a/docs/slice_zh-CN.md b/docs/slice_zh-CN.md index 062859d..0bf0ebb 100644 --- a/docs/slice_zh-CN.md +++ b/docs/slice_zh-CN.md @@ -28,6 +28,7 @@ import ( - [Count](#Count) - [Difference](#Difference) - [DifferenceBy](#DifferenceBy) +- [DifferenceWith](#DifferenceWith) - [DeleteAt](#DeleteAt) - [Drop](#Drop) - [Every](#Every) @@ -269,6 +270,34 @@ func main() { +### DifferenceWith +

DifferenceWith 接受比较器,该比较器被调用以将切片的元素与值进行比较。 结果值的顺序和引用由第一个切片确定

+ +函数签名: + +```go +func DifferenceWith[T any](slice []T, comparedSlice []T, comparator func(value, otherValue T) bool) []T +``` +例子: + +```go +import ( + "fmt" + "github.com/duke-git/lancet/slice" +) + +func main() { + s1 := []int{1, 2, 3, 4, 5} + s2 := []int{4, 5, 6, 7, 8} + isDouble := func(v1, v2 int) bool { + return v2 == 2*v1 + } + + res := slice.DifferenceWith(s1, s2, isDouble) + fmt.Println(res) //[]int{1, 5} +} +``` + ### DeleteAt

删除切片中从开始索引到结束索引-1的元素