go-ml.dev/pkg/base@v0.0.0-20200610162856-60c38abac71b/fu/values.go (about) 1 package fu 2 3 import "reflect" 4 5 func Contains(cont interface{}, val interface{}) bool { 6 cv := reflect.ValueOf(cont) 7 if cv.Kind() == reflect.Slice || cv.Kind() == reflect.Array { 8 for i := 0; i < cv.Len(); i++ { 9 if cv.Index(i).Interface() == val { 10 return true 11 } 12 } 13 } 14 return false 15 } 16 17 func ValsOf(m interface{}) interface{} { 18 v := reflect.ValueOf(m) 19 if v.Kind() != reflect.Map { 20 panic("parameter is not a map") 21 } 22 k := v.MapKeys() 23 vals := reflect.MakeSlice(reflect.SliceOf(v.Type().Elem()), len(k), len(k)) 24 for i, s := range k { 25 vals.Index(i).Set(v.MapIndex(s)) 26 } 27 return vals.Interface() 28 }