I would like to pass a struct as reference to a function and based on its type, identified by reflection, do the appropriate conversions and store the value in the struct itself. 

HOWEVER, although the code runs, and the values are identified and converted inside the function, when the control comes back to function main(), the struct doesn't have the values that I would like to have stored there. 

Here is the code:

```
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
        }
    }
}

```

In this example, I'm getting `{ 0 false}` whilst expecting `{ AAA 1 true}`

Is there any **Golang GURU** that can tell me what I'm doing wrong with this code?

Below the link to go playground 
<https://play.golang.org/p/l1_INJLOhAq>