If you just want standard string formatting for each type,
switch field.Kind() ...
can be replaced with record = append(record, fmt.Sprintf("%v", field))
. for i := range inputs { value := reflect.ValueOf(inputs[i])
is better written as for _, input { value := reflect.ValueOf(input)
. If reflect.ValueOf
proves to be a performance issue, I doubt it, you could instead write a switch
matching each string input to a struct field. If you want to get extra fancy, implement fmt.Formatter
for SalesData