INSERT INTO doc_compare_user (name,account,password,status,ctm,utm,type,admin_id,note,expire_time,deleted,source_id,sso_user_unique_id) VALUES ('test','test','d9d7392be643cc709bbcb403e441b163',1,'2024-01-17 18:08:00.598','2024-01-17 18:08:00.598',0,20230831,'','2121-01-01 00:00:00',-1,-1,'3f752d69-bf9b-4f2f-8f4f-d34d9a201bfc') /*--*/RETURNING id INTO '{{} 0xc001688a90 false}' /*-sql.Out{}-*/
func getDefaultValues(db *gorm.DB, idx int) {
insertTo := db.Statement.ReflectValue
switch insertTo.Kind() {
case reflect.Slice, reflect.Array:
insertTo = insertTo.Index(idx)
default:
}
for _, val := range db.Statement.Vars {
switch v := val.(type) {
case sql.Out:
switch insertTo.Kind() {
case reflect.Slice, reflect.Array:
for i := insertTo.Len() - 1; i >= 0; i-- {
rv := insertTo.Index(i)
if reflect.Indirect(rv).Kind() != reflect.Struct {
break
}
_, isZero := db.Statement.Schema.PrioritizedPrimaryField.ValueOf(db.Statement.Context, rv)
if isZero {
_ = db.AddError(db.Statement.Schema.PrioritizedPrimaryField.Set(db.Statement.Context, rv, v.Dest))
}
}
case reflect.Struct:
_, isZero := db.Statement.Schema.PrioritizedPrimaryField.ValueOf(db.Statement.Context, insertTo)
if isZero {
_ = db.AddError(db.Statement.Schema.PrioritizedPrimaryField.Set(db.Statement.Context, insertTo, v.Dest))
}
default:
// 会跳到这里 insertTo.Kind() = 22, 是指针类型
}
}
default:
}
}
}