32 lines
597 B
Go
32 lines
597 B
Go
package logfrog
|
|
|
|
import (
|
|
"reflect"
|
|
|
|
"golang.org/x/exp/slices"
|
|
)
|
|
|
|
func indexOf[T interface{}](s []T, v T) int {
|
|
for idx, val := range s {
|
|
if reflect.ValueOf(val) == reflect.ValueOf(v) {
|
|
return idx
|
|
}
|
|
}
|
|
return -1
|
|
}
|
|
|
|
func deleteFrom[T interface{}](s []T, v T) []T {
|
|
idx := indexOf(s, v)
|
|
if idx < 0 {
|
|
return s
|
|
}
|
|
return slices.Delete(s, idx, idx+1)
|
|
}
|
|
|
|
func deleteFromWithFlag[T interface{}](s []T, v T) ([]T, bool) {
|
|
idx := indexOf(s, v)
|
|
if idx < 0 {
|
|
return s, false
|
|
}
|
|
return slices.Delete(s, idx, idx+1), true
|
|
} |