| @@ -19,6 +19,22 @@ func RemoveAt[T any](arr []T, index int) []T { | |||||
| return append(arr[:index], arr[index+1:]...) | 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 { | func ArrayClone[T any](arr []T) []T { | ||||
| return append([]T{}, arr...) | return append([]T{}, arr...) | ||||
| } | } | ||||
| @@ -29,3 +45,12 @@ func Insert[T any](arr []T, index int, item T) []T { | |||||
| arr[index] = item | arr[index] = item | ||||
| return arr | 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 | |||||
| } | |||||