Reputation: 121
package main
import (
"fmt"
"reflect"
)
type A struct {
D *int
}
func main() {
a := &A{}
v := reflect.ValueOf(a)
e := v.Elem()
f := e.Field(0)
z := reflect.Zero(f.Type().Elem())
f.Set(z)
fmt.Println(z)
}
panic: reflect.Set: value of type int is not assignable to type *int
how to set the *D to default value use reflect
Upvotes: 12
Views: 6406
Reputation: 77925
You need to have a pointer value (*int), but the reflect
documentation states for func Zero(typ Type) Value
that:
The returned value is neither addressable nor settable.
In your case you can instead use New
:
z := reflect.New(f.Type().Elem())
Upvotes: 13