Пакет reflect позволяет инспектировать и модифицировать типы и значения в рантайме. reflect.TypeOf даёт тип, reflect.ValueOf — значение. Можно узнать поля структуры, вызвать метод по имени, создать значение динамически. JSON-маршалинг, ORM, dependency injection — всё под капотом использует reflect. Но у него три проблемы: медленный (в 10-100 раз медленнее прямого кода), не типобезопасный (паники в рантайме вместо ошибок компиляции), и код с ним тяжело читать. Используй только когда без него никак — чаще всего можно обойтись дженериками или code generation.