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

feat: add Join

This commit is contained in:
dudaodong
2023-07-10 10:51:43 +08:00
parent 36ef5b3bd3
commit d5334f892f
5 changed files with 108 additions and 1 deletions

View File

@@ -9,6 +9,7 @@ import (
"math/rand"
"reflect"
"sort"
"strings"
"time"
"golang.org/x/exp/constraints"
@@ -1188,3 +1189,13 @@ func KeyBy[T any, U comparable](slice []T, iteratee func(item T) U) map[U]T {
return result
}
// Join the slice item with specify separator.
// Play: todo
func Join[T any](s []T, separator string) string {
str := Map(s, func(_ int, item T) string {
return fmt.Sprint(item)
})
return strings.Join(str, separator)
}

View File

@@ -1032,3 +1032,17 @@ func ExampleKeyBy() {
// Output:
// map[1:a 2:ab 3:abc]
}
func ExampleJoin() {
nums := []int{1, 2, 3, 4, 5}
result1 := Join(nums, ",")
result2 := Join(nums, "-")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// 1,2,3,4,5
// 1-2-3-4-5
}

View File

@@ -1161,3 +1161,17 @@ func TestRepeat(t *testing.T) {
assert.Equal([]string{}, Repeat("a", 0))
assert.Equal([]string{"a", "a", "a", "a", "a", "a"}, Repeat("a", 6))
}
func TestJoin(t *testing.T) {
t.Parallel()
assert := internal.NewAssert(t, "TestJoin")
nums := []int{1, 2, 3, 4, 5}
result1 := Join(nums, ",")
result2 := Join(nums, "-")
assert.Equal("1,2,3,4,5", result1)
assert.Equal("1-2-3-4-5", result2)
}