|
- package lo2
-
- import "github.com/samber/lo"
-
- func Remove[T comparable](arr []T, item T) []T {
- index := lo.IndexOf(arr, item)
- if index == -1 {
- return arr
- }
-
- return RemoveAt(arr, index)
- }
-
- func RemoveAt[T any](arr []T, index int) []T {
- if index >= len(arr) {
- return arr
- }
-
- return append(arr[:index], arr[index+1:]...)
- }
-
- func RemoveAllDefault[T comparable](arr []T) []T {
- var def T
- return lo.Filter(arr, func(i T, idx int) bool {
- return i != def
- })
- }
-
- func Clear[T comparable](arr []T, item T) {
- var def T
- for i := 0; i < len(arr); i++ {
- if arr[i] == item {
- arr[i] = def
- }
- }
- }
-
- func ArrayClone[T any](arr []T) []T {
- return append([]T{}, arr...)
- }
-
- func Insert[T any](arr []T, index int, item T) []T {
- arr = append(arr, item)
- copy(arr[index+1:], arr[index:])
- arr[index] = item
- return arr
- }
-
- func Deref[T any](arr []*T) []T {
- result := make([]T, len(arr))
- for i := 0; i < len(arr); i++ {
- result[i] = *arr[i]
- }
-
- return result
- }
|