Files
excelConverter/pkg/set/set.go
2021-02-28 08:33:00 +01:00

42 lines
738 B
Go

package set
import (
"errors"
"reflect"
"strconv"
)
var (
ErrTypeConvert = errors.New("cannot convert input")
)
func Field(dst interface{}, fieldName string, value string) error {
valDst := reflect.ValueOf(dst).Elem()
dstField := valDst.FieldByName(fieldName)
val := reflect.ValueOf(value)
if dstField.Kind() != val.Kind() {
// try to convert
switch dstField.Kind() {
case reflect.Int:
d, err := strconv.Atoi(value)
if err != nil {
return ErrTypeConvert
}
val = reflect.ValueOf(d)
case reflect.Float64:
f, err := strconv.ParseFloat(value, 64)
if err != nil {
return ErrTypeConvert
}
val = reflect.ValueOf(f)
default:
return ErrTypeConvert
}
}
dstField.Set(val)
return nil
}