Введение в рефлексию в Go
Рефлексия смотрит на тип и поля значения уже во время работы программы. Обычный код знает тип на этапе компиляции, а здесь имя типа и состав структуры можно прочитать из переменной, когда программа уже запущена.
Для этого служит пакет reflect из
стандартной библиотеки. Он не заменяет
обычные поля и методы, а дополняет их там,
где одна функция должна обработать разные
структуры или проверить, что лежит внутри
интерфейса.
Вы уже умеете объявлять структуры, вешать на них методы и работать с интерфейсами. Рефлексия опирается на те же правила: экспортируемые имена видны снаружи пакета, а к полям обращаются по номеру и имени через специальные значения из пакета.
В этом разделе сначала разберем различие между именем типа и его видом, затем перебор полей и чтение строки-метки у поля. Отдельно посмотрим вызов метода по имени из текста. В конце закрепим приемы на задачах без готовых фрагментов кода.