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:int类型的值不能分配给类型* int
如何将* D设置为默认值使用反射
答案 0 :(得分:13)
您需要有一个指针值(* int),但reflect
文档指出func Zero(typ Type) Value
:
返回的值既不可寻址也不可设置。
在您的情况下,您可以使用New
:
z := reflect.New(f.Type().Elem())
答案 1 :(得分:2)
试试这个
var i int
f.Set(reflect.ValueOf(&i))