Я хотел бы передать структуру в качестве ссылки на функцию и на основе ее типа, идентифицированного отражением, выполнить соответствующие преобразования и сохранить значение в самой структуре.
ОДНАКО, хотя код выполняется, а значения идентифицируются и преобразуются внутри функции, когда элемент управления возвращается к функции main (), структура не имеет значений, которые я хотел бы сохранитьтам.
Вот код:
package main
import (
"fmt"
"reflect"
"strconv"
)
type x struct {
f1 string
f2 int
f3 bool
}
func main() {
s := x{}
getData(&s.f1, "AAA")
getData(&s.f2, "1")
getData(&s.f3, "true")
fmt.Println(s)
}
func getData(data interface{}, value string) {
if value != "" {
switch reflect.TypeOf(data).String() {
case "*int":
data, _ = strconv.Atoi(value)
case "*bool":
data, _ = strconv.ParseBool(value)
case "*string":
data = value
}
}
}
В этом примере я получаю { 0 false}
, ожидая { AAA 1 true}
Есть ли Golang GURU что может подсказать, что я делаю не так с этим кодом?
Ниже ссылки для перехода на игровую площадку https://play.golang.org/p/l1_INJLOhAq