«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить имя функции с помощью отражения в Go?

Как получить имя функции с помощью отражения в Go?

Опубликовано 10 ноября 2024 г.
Просматривать:577

How to Retrieve a Function's Name Using Reflection in Go?

Получить имя функции с помощью отражения

В Go отражение предоставляет механизм для проверки и управления структурами программы во время выполнения. Доступ к имени функции является одним из таких вариантов использования. Однако попытка получить имя непосредственно из его типа может привести к получению пустой строки.

Ожидаемое поведение

Получение имени функции с помощью Reflection.TypeOf(function). Name() возвращает пустую строку, поскольку она указывает на сам тип, который не содержит имени функции.

Решение

Чтобы получить имя функции, мы необходимо использовать runtime.FuncForPC. Эта функция принимает указатель на отраженное значение функции и возвращает указатель на структуру *Func. Вызов метода Name для этой *Func дает ожидаемое имя функции в следующем виде:

name := runtime.FuncForPC(reflect.ValueOf(function).Pointer()).Name()

This подход возвращает как имя пакета, так и имя функции, например. "пакет.функция". При желании имя пакета можно извлечь путем токенизации строки.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3