К вопросам

Рефлексия и интерфейсы

Тест · Вопрос 4 из 4

Тест

Вопрос 4

Можно ли через `reflect` записать экспортированное поле структуры, если `reflect.Value` получен из указателя `*T` и поле адресуемо?

Go
package main

import (
	"fmt"
	"reflect"
)

type S struct{ N int }

func main() {
	x := &S{N: 1}
	v := reflect.ValueOf(x).Elem()
	f := v.FieldByName("N")
	fmt.Println(f.CanSet())
}
Варианты ответа

Выберите один ответ

`Elem()` для указателя на структуру даёт отражённое значение структуры. Поле через `FieldByName` изменяемо (`settable`), если значение получено из адресуемого объекта — тогда безопасно вызывать `Set*`; иначе будет паника.