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  }