Получение списка имен методов из интерфейса
В Go отражение позволяет проверять внутреннюю структуру программы и манипулировать ею во время выполнения . Сюда входит возможность доступа к информации о типе интерфейса, такой как имена его методов.
Рассмотрим следующий интерфейс:
type FooService interface {
Foo1(x int) int
Foo2(x string) string
}
Чтобы получить список имен методов для этого интерфейса с помощью отражения:
t := reflect.TypeOf((*FooService)(nil)).Elem()
Эта строка извлекает Reflect.Type для конкретного типа, который реализует интерфейс FooService.
for i := 0; i Функция NumMethod() возвращает количество методов в интерфейсе.
- Получите имена методов:
s = append(s, t.Method(i).Name)
Функция Method(i) возвращает Reflection.Method Объект, представляющий метод по индексу i. Поле Name этого объекта содержит имя метода.
Полученный список будет содержать имена методов ["Foo1", "Foo2"].
Пояснения:
- Синтаксис (*FooService)(nil) используется для создания указателя на анонимный экземпляр интерфейса FooService. Это необходимо для получения Reflection.Type для интерфейса.
- Метод Elem() возвращает Reflection.Type для конкретного типа, реализующего интерфейс, а не самого типа интерфейса.
- Функция NumMethod() возвращает количество методов, объявленных в интерфейсе, даже если конкретный тип реализует дополнительные методы.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3