sando o refletir, como você define o valor de um campo struc

tendo um tempo difícil trabalhando com campos struct usandoreflect pacote. em particular, não descobriram como definir o valor do campo.

type t struct { fi int; fs string }
var r t = t{ 123, "jblow" }
var i64 int64 = 456

getting Nome do campo i - isso parece funcionar

var field = reflect.TypeOf(r).Field(i).Name

getting valor do campo i como a) interface {}, b) int - isso parece funcionar

var iface interface{} = reflect.ValueOf(r).Field(i).Interface()

var i int = int(reflect.ValueOf(r).Field(i).Int())

definição do valor do campo i - tente um - panic

reflect.ValueOf(r).Field(i).SetInt( i64 )

pânic: reflect.Value · SetInt usando o valor obtido usando o campo não exportado

assumindo que ele não gostou dos nomes de campo "id" e "name", renomeado para "Id" e "Name"

a) esta suposição está correta?

b) se correto, não necessário, pois no mesmo arquivo / pacote

configurando o valor do campo i - tente dois (com os nomes dos campos em maiúsculas) - panic

reflect.ValueOf(r).Field(i).SetInt( 465 )

reflect.ValueOf(r).Field(i).SetInt( i64 )

pânic: reflect.Value · SetInt usando valor não endereçável

As instruções abaixo de @peterSO são completas e de alta qualidade

Four. isso funciona

reflect.ValueOf(&r).Elem().Field(i).SetInt( i64 )

os documentos também que os nomes dos campos devem ser exportáveis (comece com letras maiúsculas)

questionAnswers(2)

yourAnswerToTheQuestion