2
0

Factor out duplication in AssignTo

This commit is contained in:
Jack Christensen
2017-03-18 16:54:08 -05:00
parent 264823e6ab
commit 4d9c44fc01
28 changed files with 430 additions and 492 deletions
+12 -11
View File
@@ -59,28 +59,29 @@ func (dst *Float4Array) Get() interface{} {
}
func (src *Float4Array) AssignTo(dst interface{}) error {
switch v := dst.(type) {
switch src.Status {
case Present:
switch v := dst.(type) {
case *[]float32:
if src.Status == Present {
case *[]float32:
*v = make([]float32, len(src.Elements))
for i := range src.Elements {
if err := src.Elements[i].AssignTo(&((*v)[i])); err != nil {
return err
}
}
} else {
*v = nil
}
return nil
default:
if originalDst, ok := underlyingPtrSliceType(dst); ok {
return src.AssignTo(originalDst)
default:
if nextDst, retry := GetAssignToDstType(dst); retry {
return src.AssignTo(nextDst)
}
}
return fmt.Errorf("cannot decode %v into %T", src, dst)
case Null:
return nullAssignTo(dst)
}
return nil
return fmt.Errorf("cannot decode %v into %T", src, dst)
}
func (dst *Float4Array) DecodeText(ci *ConnInfo, src []byte) error {