YTSFlix_Go/vendor/github.com/anacrolix/missinggo/slices/filter.go
2018-11-04 15:58:15 +01:00

18 lines
326 B
Go

package slices
import "reflect"
// sl []T, f is func(*T) bool.
func FilterInPlace(sl interface{}, f interface{}) {
v := reflect.ValueOf(sl).Elem()
j := 0
for i := 0; i < v.Len(); i++ {
e := v.Index(i)
if reflect.ValueOf(f).Call([]reflect.Value{e.Addr()})[0].Bool() {
v.Index(j).Set(e)
j++
}
}
v.SetLen(j)
}