mirror of
https://github.com/rjNemo/underscore
synced 2026-06-11 21:16:50 +00:00
creating slice and pointer changes
This commit is contained in:
parent
507e604582
commit
f3ba5b98b6
3 changed files with 90 additions and 0 deletions
13
pointer.go
Normal file
13
pointer.go
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
package underscore
|
||||||
|
|
||||||
|
// Convert values to pointers
|
||||||
|
//
|
||||||
|
// Instead of:
|
||||||
|
// v = "value"
|
||||||
|
// MyPointerVar = &v
|
||||||
|
//
|
||||||
|
// Use:
|
||||||
|
// MyPointerVar = ToPointer("value")
|
||||||
|
func ToPointer[T any](in T) *T {
|
||||||
|
return &in
|
||||||
|
}
|
||||||
21
slices.go
Normal file
21
slices.go
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
package underscore
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sort"
|
||||||
|
|
||||||
|
"golang.org/x/exp/constraints"
|
||||||
|
)
|
||||||
|
|
||||||
|
// sort any slice ASENDING
|
||||||
|
func SortSliceASC[T constraints.Ordered](s []T) {
|
||||||
|
sort.Slice(s, func(i, j int) bool {
|
||||||
|
return s[i] < s[j]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// sort any slice DESCENDING
|
||||||
|
func SortSliceDESC[T constraints.Ordered](s []T) {
|
||||||
|
sort.Slice(s, func(i, j int) bool {
|
||||||
|
return s[i] > s[j]
|
||||||
|
})
|
||||||
|
}
|
||||||
56
slices_test.go
Normal file
56
slices_test.go
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
package underscore_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSortSliceAscString(t *testing.T) {
|
||||||
|
slc := []string{"c", "a", "b"}
|
||||||
|
expected := []string{"a", "b", "c"}
|
||||||
|
u.SortSliceASC(slc)
|
||||||
|
|
||||||
|
assert.Equal(t, expected, slc)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSortSliceDescString(t *testing.T) {
|
||||||
|
slc := []string{"c", "a", "b"}
|
||||||
|
expected := []string{"c", "b", "a"}
|
||||||
|
u.SortSliceDESC(slc)
|
||||||
|
|
||||||
|
assert.Equal(t, expected, slc)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSortSliceAscInt(t *testing.T) {
|
||||||
|
slc := []int{1, 4, 3, 5, 2}
|
||||||
|
expected := []int{1, 2, 3, 4, 5}
|
||||||
|
u.SortSliceASC(slc)
|
||||||
|
|
||||||
|
assert.Equal(t, expected, slc)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSortSliceDescInt(t *testing.T) {
|
||||||
|
slc := []int{1, 4, 3, 5, 2}
|
||||||
|
expected := []int{5, 4, 3, 2, 1}
|
||||||
|
u.SortSliceDESC(slc)
|
||||||
|
|
||||||
|
assert.Equal(t, expected, slc)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSortSliceAscFloat64(t *testing.T) {
|
||||||
|
slc := []float64{1.0, 1.2, 1.1, 1.5, 1.01}
|
||||||
|
expected := []float64{1, 1.01, 1.1, 1.2, 1.5}
|
||||||
|
u.SortSliceASC(slc)
|
||||||
|
|
||||||
|
assert.Equal(t, expected, slc)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSortSliceDescFloat64(t *testing.T) {
|
||||||
|
slc := []float64{1.0, 1.2, 1.1, 1.5, 1.01}
|
||||||
|
expected := []float64{1.5, 1.2, 1.1, 1.01, 1}
|
||||||
|
u.SortSliceDESC(slc)
|
||||||
|
|
||||||
|
assert.Equal(t, expected, slc)
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue