我想传递一个结构作为对函数的引用,并根据它的类型(由反射识别)进行适当的转换并将值存储在结构本身中。
然而,虽然代码运行,并且值在函数内部被识别和转换,但当控件返回到函数 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
慕的地6264312
慕后森
相关分类