From 26ff90122bd0c61e82f2645f8e7752a56736901b Mon Sep 17 00:00:00 2001 From: dudaodong Date: Fri, 10 Feb 2023 10:31:02 +0800 Subject: [PATCH] doc: add doc for Drop function --- docs/slice.md | 148 +++++++++++++++++++++++++++++++++++++++---- docs/slice_zh-CN.md | 149 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 271 insertions(+), 26 deletions(-) diff --git a/docs/slice.md b/docs/slice.md index 5df24f8..9a706fd 100644 --- a/docs/slice.md +++ b/docs/slice.md @@ -35,6 +35,9 @@ import ( - [DifferenceWith](#DifferenceWith) - [DeleteAt](#DeleteAt) - [Drop](#Drop) +- [DropRight](#DropRight) +- [DropWhile](#DropWhile) +- [DropRightWhile](#DropRightWhile) - [Equal](#Equal) - [EqualWith](#EqualWith) - [Every](#Every) @@ -487,7 +490,7 @@ func main() { ### Drop -

Creates a slice with `n` elements dropped from the beginning when n > 0, or `n` elements dropped from the ending when n < 0.

+

Drop n elements from the start of a slice.

Signature: @@ -505,20 +508,139 @@ import ( func main() { result1 := slice.Drop([]string{"a", "b", "c"}, 0) - result2 := slice.Drop([]string{"a", "b", "c"}, 1) - result3 := slice.Drop([]string{"a", "b", "c"}, -1) - result4 := slice.Drop([]string{"a", "b", "c"}, 4) + result2 := slice.Drop([]string{"a", "b", "c"}, 1) + result3 := slice.Drop([]string{"a", "b", "c"}, -1) + result4 := slice.Drop([]string{"a", "b", "c"}, 4) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // [a b c] - // [b c] - // [a b] - // [] + // Output: + // [a b c] + // [b c] + // [a b c] + // [] +} +``` + +### DropRight + +

Drop n elements from the end of a slice.

+ +Signature: + +```go +func DropRight[T any](slice []T, n int) []T +``` + +Example: + +```go +import ( + "fmt" + "github.com/duke-git/lancet/v2/slice" +) + +func main() { + result1 := slice.DropRight([]string{"a", "b", "c"}, 0) + result2 := slice.DropRight([]string{"a", "b", "c"}, 1) + result3 := slice.DropRight([]string{"a", "b", "c"}, -1) + result4 := slice.DropRight([]string{"a", "b", "c"}, 4) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + + // Output: + // [a b c] + // [a b] + // [a b c] + // [] +} +``` + +### DropWhile + +

Drop n elements from the start of a slice while predicate function returns true.

+ +Signature: + +```go +func DropWhile[T any](slice []T, predicate func(item T) bool) []T +``` + +Example: + +```go +import ( + "fmt" + "github.com/duke-git/lancet/v2/slice" +) + +func main() { + result1 := slice.DropWhile(numbers, func(n int) bool { + return n != 2 + }) + result2 := slice.DropWhile(numbers, func(n int) bool { + return true + }) + result3 := slice.DropWhile(numbers, func(n int) bool { + return n == 0 + }) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // [2 3 4 5] + // [] + // [1 2 3 4 5] +} +``` + +### DropRightWhile + +

Drop n elements from the end of a slice while predicate function returns true.

+ +Signature: + +```go +func DropRightWhile[T any](slice []T, predicate func(item T) bool) []T +``` + +Example: + +```go +import ( + "fmt" + "github.com/duke-git/lancet/v2/slice" +) + +func main() { + numbers := []int{1, 2, 3, 4, 5} + + result1 := slice.DropRightWhile(numbers, func(n int) bool { + return n != 2 + }) + result2 := slice.DropRightWhile(numbers, func(n int) bool { + return true + }) + result3 := slice.DropRightWhile(numbers, func(n int) bool { + return n == 0 + }) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // [1 2] + // [] + // [1 2 3 4 5] } ``` diff --git a/docs/slice_zh-CN.md b/docs/slice_zh-CN.md index 5be6079..5db48e9 100644 --- a/docs/slice_zh-CN.md +++ b/docs/slice_zh-CN.md @@ -35,6 +35,9 @@ import ( - [DifferenceWith](#DifferenceWith) - [DeleteAt](#DeleteAt) - [Drop](#Drop) +- [DropRight](#DropRight) +- [DropWhile](#DropWhile) +- [DropRightWhile](#DropRightWhile) - [Every](#Every) - [Equal](#Equal) - [EqualWith](#EqualWith) @@ -486,9 +489,10 @@ func main() { } ``` + ### Drop -

创建一个切片,当n > 0时从开头删除n个元素,或者当n < 0时从结尾删除n个元素

+

从切片的头部删除n个元素。

函数签名: @@ -506,20 +510,139 @@ import ( func main() { result1 := slice.Drop([]string{"a", "b", "c"}, 0) - result2 := slice.Drop([]string{"a", "b", "c"}, 1) - result3 := slice.Drop([]string{"a", "b", "c"}, -1) - result4 := slice.Drop([]string{"a", "b", "c"}, 4) + result2 := slice.Drop([]string{"a", "b", "c"}, 1) + result3 := slice.Drop([]string{"a", "b", "c"}, -1) + result4 := slice.Drop([]string{"a", "b", "c"}, 4) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // [a b c] - // [b c] - // [a b] - // [] + // Output: + // [a b c] + // [b c] + // [a b c] + // [] +} +``` + +### DropRight + +

从切片的尾部删除n个元素。

+ +函数签名: + +```go +func DropRight[T any](slice []T, n int) []T +``` + +示例: + +```go +import ( + "fmt" + "github.com/duke-git/lancet/v2/slice" +) + +func main() { + result1 := slice.DropRight([]string{"a", "b", "c"}, 0) + result2 := slice.DropRight([]string{"a", "b", "c"}, 1) + result3 := slice.DropRight([]string{"a", "b", "c"}, -1) + result4 := slice.DropRight([]string{"a", "b", "c"}, 4) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + + // Output: + // [a b c] + // [a b] + // [a b c] + // [] +} +``` + +### DropWhile + +

从切片的头部删除n个元素,这个n个元素满足predicate函数返回true。

+ +函数签名: + +```go +func DropWhile[T any](slice []T, predicate func(item T) bool) []T +``` + +示例: + +```go +import ( + "fmt" + "github.com/duke-git/lancet/v2/slice" +) + +func main() { + result1 := slice.DropWhile(numbers, func(n int) bool { + return n != 2 + }) + result2 := slice.DropWhile(numbers, func(n int) bool { + return true + }) + result3 := slice.DropWhile(numbers, func(n int) bool { + return n == 0 + }) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // [2 3 4 5] + // [] + // [1 2 3 4 5] +} +``` + +### DropRightWhile + +

从切片的尾部删除n个元素,这个n个元素满足predicate函数返回true。

+ +函数签名: + +```go +func DropRightWhile[T any](slice []T, predicate func(item T) bool) []T +``` + +示例: + +```go +import ( + "fmt" + "github.com/duke-git/lancet/v2/slice" +) + +func main() { + numbers := []int{1, 2, 3, 4, 5} + + result1 := slice.DropRightWhile(numbers, func(n int) bool { + return n != 2 + }) + result2 := slice.DropRightWhile(numbers, func(n int) bool { + return true + }) + result3 := slice.DropRightWhile(numbers, func(n int) bool { + return n == 0 + }) + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + + // Output: + // [1 2] + // [] + // [1 2 3 4 5] } ```