"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo recuperar el nombre de una función usando Reflection in Go?

¿Cómo recuperar el nombre de una función usando Reflection in Go?

Publicado el 2024-11-10
Navegar:389

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

Recuperar el nombre de la función con reflexión

En Go, la reflexión proporciona el mecanismo para inspeccionar y manipular las estructuras del programa en tiempo de ejecución. Acceder al nombre de una función es uno de esos casos de uso. Sin embargo, intentar obtener el nombre directamente de su tipo puede dar como resultado una cadena vacía.

Comportamiento esperado

Recuperar el nombre de una función usando reflect.TypeOf(función). Nombre() devuelve una cadena vacía ya que apunta al tipo en sí, que no contiene el nombre de la función.

Solución

Para recuperar el nombre de la función, necesita utilizar runtime.FuncForPC. Esta función toma el puntero al valor reflejado de la función y devuelve un puntero a una estructura *Func. Llamar al método Name en esta *Func produce el nombre de función esperado como:

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

This El enfoque devuelve tanto el paquete como el nombre de la función, p. "paquete.función". Si lo desea, el nombre del paquete se puede extraer tokenizando la cadena.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3