acmestack / gorm-plus

Gorm-plus是基于Gorm的增强版,类似Mybatis-plus语法。Gorm-plus is based on an enhanced version of Gorm, similar to Mybatis-plus syntax.
https://github.com/acmestack/gorm-plus/wiki
Apache License 2.0
285 stars 44 forks source link

有异常panic #82

Open icetech233 opened 7 months ago

icetech233 commented 7 months ago

getColumnNameMap

icetech233 commented 7 months ago

reflect: call of reflect.Value.NumField on ptr Value /usr/lib/go-1.20/src/reflect/value.go:223 (0x4c656c) flag.mustBe: panic(&ValueError{valueMethodName(), f.kind()}) /usr/lib/go-1.20/src/reflect/value.go:2041 (0x4c6502) Value.NumField: v.mustBe(Struct) /root/gocode/wms/vendor/github.com/acmestack/gorm-plus/gplus/cache.go:50 (0x9aa67e) getColumnNameMap: for i := 0; i < valueOf.NumField(); i++ { /root/gocode/wms/vendor/github.com/acmestack/gorm-plus/gplus/dao.go:129 (0x9ab1c4)

icetech233 commented 7 months ago

NumField 这个函数是不能随便调用的

icetech233 commented 7 months ago

推荐用这个

for _, f := range fields {
    // f.Index
    sfv := sv.FieldByName(f.Name)
    // get dst field by name
    dfv := dv.FieldByName(f.Name)