From 6da4a66c20b284e78d4508013310f0872ae81eb8 Mon Sep 17 00:00:00 2001 From: zav8 Date: Thu, 6 Dec 2018 16:09:39 +0800 Subject: [PATCH] merge switch cases --- orm/orm_raw.go | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/orm/orm_raw.go b/orm/orm_raw.go index 08efa4e5..27651fe4 100644 --- a/orm/orm_raw.go +++ b/orm/orm_raw.go @@ -152,7 +152,7 @@ func (o *rawSet) setFieldValue(ind reflect.Value, value interface{}) { ind.Set(reflect.Zero(ind.Type())) return } - switch indi := ind.Interface().(type) { + switch ind.Interface().(type) { case time.Time: var str string switch d := value.(type) { @@ -180,25 +180,15 @@ func (o *rawSet) setFieldValue(ind reflect.Value, value interface{}) { } } } - case sql.NullString: - err := indi.Scan(value) - if err == nil { - ind.Set(reflect.ValueOf(indi)) + case sql.NullString, sql.NullInt64, sql.NullFloat64, sql.NullBool: + indi := reflect.New(ind.Type()).Interface() + sc, ok := indi.(sql.Scanner) + if !ok { + return } - case sql.NullInt64: - err := indi.Scan(value) + err := sc.Scan(value) if err == nil { - ind.Set(reflect.ValueOf(indi)) - } - case sql.NullFloat64: - err := indi.Scan(value) - if err == nil { - ind.Set(reflect.ValueOf(indi)) - } - case sql.NullBool: - err := indi.Scan(value) - if err == nil { - ind.Set(reflect.ValueOf(indi)) + ind.Set(reflect.Indirect(reflect.ValueOf(sc))) } } }