Используя рефлексию, как вы инициализируете значение поля указателя структуры?
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 по умолчанию использовать отражение
Ответы
Ответ 1
Вам нужно иметь значение указателя (* int), но в документации reflect
указано func Zero(typ Type) Value
, что:
Возвращаемое значение не адресуется и не устанавливается.
В вашем случае вместо этого вы можете использовать New
:
z := reflect.New(f.Type().Elem())
Ответ 2
попробуйте это
var i int
f.Set(reflect.ValueOf(&i))