-
Notifications
You must be signed in to change notification settings - Fork 0
/
sort.go
71 lines (52 loc) · 1.41 KB
/
sort.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package golist
import "github.com/emylincon/golist/core"
// Sort :
// sorts elements in the list in ascending order or descending order in place.
func (arr *List) Sort(reverse bool) {
switch list := arr.list.(type) {
case []int:
sorted := core.SortInt(&list, reverse)
arr.list = *sorted
case []int32:
sorted := core.SortInt32(&list, reverse)
arr.list = *sorted
case []int64:
sorted := core.SortInt64(&list, reverse)
arr.list = *sorted
case []float32:
sorted := core.SortFloat32(&list, reverse)
arr.list = *sorted
case []float64:
sorted := core.SortFloat64(&list, reverse)
arr.list = *sorted
case []string:
sorted := core.SortString(&list, reverse)
arr.list = *sorted
}
}
// Sorted :
// sorts elements in the list in ascending order or descending order and returns new list.
func (arr *List) Sorted(reverse bool) *List {
switch list := arr.list.(type) {
case []int:
sorted := core.SortInt(&list, reverse)
return NewList(*sorted)
case []int32:
sorted := core.SortInt32(&list, reverse)
return NewList(*sorted)
case []int64:
sorted := core.SortInt64(&list, reverse)
return NewList(*sorted)
case []float32:
sorted := core.SortFloat32(&list, reverse)
return NewList(*sorted)
case []float64:
sorted := core.SortFloat64(&list, reverse)
return NewList(*sorted)
case []string:
sorted := core.SortString(&list, reverse)
return NewList(*sorted)
default:
return nil
}
}