获取对象数组最大对象

func Max(ns interface{}, f interface{}) interface{} {
    rv := reflect.ValueOf(ns)
    if rv.Len() == 0 {
        return nil
    }
    rf := reflect.ValueOf(f)
    rft := rf.Type()
    out := rft.Out(0)
    sort.Slice(ns, func(i, j int) bool {
        switch out.Kind() {
        case reflect.Float64:
            return rf.Call([]reflect.Value{rv.Index(i)})[0].Float() > rf.Call([]reflect.Value{rv.Index(j)})[0].Float()
        case reflect.Int, reflect.Int64:
            return rf.Call([]reflect.Value{rv.Index(i)})[0].Int() > rf.Call([]reflect.Value{rv.Index(j)})[0].Int()
        }
        panic("不支持的返回类型")
    })
    return rv.Index(0).Interface()
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容