代码拉取完成,页面将自动刷新
同步操作将从 unsafe-rust/sq 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package sq
import (
"gitee.com/gopher2011/sqlx/reflectx"
"reflect"
)
// ReflectMapper 数据库字段与结构体属性的反射映射器。
type ReflectMapper struct {
mapper *reflectx.Mapper
}
// NewReflectMapper 输入<tagName>返回一个 反射映射器对象。
func NewReflectMapper(tagName string) *ReflectMapper {
return &ReflectMapper{
mapper: reflectx.NewMapper(tagName),
}
}
// FieldByName 通过其映射名称返回字段,即 reflect.Value。
// 如果v的Kind不是Struct或v不可间接访问结构体,则会 panic。
// 如果找不到名称,则返回零值。
func (r *ReflectMapper) FieldByName(v reflect.Value, name string) reflect.Value {
return r.mapper.FieldByName(v, name)
}
// FieldMap 返回映射器对字段名称的映射以反映值。
// 如果 v不是结构体指针,或者不是结果体,则会panic。
func (r *ReflectMapper) FieldMap(v reflect.Value) map[string]reflect.Value {
v = reflect.Indirect(v)
ret := map[string]reflect.Value{}
tm := r.mapper.TypeMap(v.Type())
for tagName, fi := range tm.Names {
//fmt.Println(tagName,fi.Parent.Zero.Kind(),fi.Parent.Field.Anonymous)
if (fi.Parent.Zero.Kind() == reflect.Struct || (fi.Zero.Kind() == reflect.Ptr && fi.Zero.Type().Elem().Kind() == reflect.Struct)) && !fi.Parent.Field.Anonymous {
continue
}
ret[tagName] = reflectx.FieldByIndexes(v, fi.Index)
}
return ret
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。