Подтвердить что ты не робот

Используя рефлексию, как вы инициализируете значение поля указателя структуры?

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 по умолчанию использовать отражение

4b9b3361

Ответ 1

Вам нужно иметь значение указателя (* int), но в документации reflect указано func Zero(typ Type) Value, что:

Возвращаемое значение не адресуется и не устанавливается.

В вашем случае вместо этого вы можете использовать New:

z := reflect.New(f.Type().Elem())

Ответ 2

попробуйте это

var i int
f.Set(reflect.ValueOf(&i))