Извлечение Reflect.Type из типа или его имени в Go
Этот вопрос исследует, возможно ли получить Reflect.Type a пользовательский тип, такой как «t1» в данном примере, без его создания или использования его имени в виде строки.
Что касается первой части вопроса, да, этого можно добиться, используя типизированный ноль. . Следующий фрагмент кода демонстрирует этот подход:
var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()
В этом примере мы используем типизированный nil для получения типа времени выполнения «t1».
Что касается второй части, получение отражения.Type непосредственно из имени типа не поддерживается в Go. Среда выполнения не поддерживает карту всех типов в текущем двоичном файле, что было бы необходимо для этого.
Хотя возможно создать пакет реестра типов и зарегистрировать типы для поиска по строке, это неизбежно быть неполным. Более того, анонимные типы создают сложности, поскольку их имена могут не быть уникальными.
Хотя Go теоретически может предложить функцию для извлечения типа по его имени, маловероятно, что эта функция будет реализована в ближайшем будущем.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3