diff --git a/slices/slice.go b/slices/slice.go index 85ebb7e..bd16f55 100644 --- a/slices/slice.go +++ b/slices/slice.go @@ -437,10 +437,12 @@ func Same[S ~[]T, T comparable](items S) bool { return true } -// Shuffle in random order arr elements -func Shuffle[S ~[]T, T any](items S, seed int64) S { +// Shuffle in random order the given elements +// +// This is an in-place operation, it modifies the passed slice. +func Shuffle[S ~[]T, T any](items S, seed int64) { if len(items) <= 1 { - return items + return } if seed == 0 { seed = time.Now().UnixNano() @@ -450,7 +452,6 @@ func Shuffle[S ~[]T, T any](items S, seed int64) S { items[i], items[j] = items[j], items[i] } rand.Shuffle(len(items), swap) - return items } // Sort returns sorted slice diff --git a/slices/slice_test.go b/slices/slice_test.go index 489403d..7ac1f95 100644 --- a/slices/slice_test.go +++ b/slices/slice_test.go @@ -376,8 +376,8 @@ func TestSame(t *testing.T) { func TestShuffle(t *testing.T) { is := is.New(t) f := func(given []int, seed int64, expected []int) { - actual := slices.Shuffle(given, seed) - is.Equal(expected, actual) + slices.Shuffle(given, seed) + is.Equal(given, expected) } f([]int{}, 0, []int{}) f([]int{1}, 0, []int{1})