美文网首页
通过标签找指定列的值

通过标签找指定列的值

作者: funcx | 来源:发表于2019-02-14 16:10 被阅读0次
    func getStructFieldValByBsonTag(obj reflect.Value, tag string) (interface{}, bool) {
        for i := 0; i < obj.NumField(); i++ {
            switch obj.Field(i).Kind() {
            case reflect.Struct:
                return getStructFieldValByBsonTag(obj.Field(i), tag)
            default:
                if obj.Type().Field(i).Tag.Get("bson") == tag {
                    return obj.Field(i).Interface(), true
                }
            }
        }
        return nil, false
    }
    
    func GetFieldValByBsonTag(ptr interface{}, tag string) interface{} {
        t := reflect.TypeOf(ptr).Elem()
        v := reflect.ValueOf(ptr).Elem()
        for i := 0; i < t.NumField(); i++ {
            switch t.Field(i).Type.Kind() {
            case reflect.Struct:
                if res, ok := getStructFieldValByBsonTag(v.Field(i), tag); ok {
                    return res
                }
            default:
                if t.Field(i).Tag.Get("bson") == tag {
                    return v.Field(i).Interface()
                }
            }
        }
        panic("GetFieldValByBsonTag panic")
    }
    

    相关文章

      网友评论

          本文标题:通过标签找指定列的值

          本文链接:https://www.haomeiwen.com/subject/unweeqtx.html