Obtener una lista de nombres de métodos desde una interfaz
En Go, la reflexión permite inspeccionar y manipular la estructura interna de un programa en tiempo de ejecución . Esto incluye la capacidad de acceder a información sobre un tipo de interfaz, como los nombres de sus métodos.
Considere la siguiente interfaz:
type FooService interface {
Foo1(x int) int
Foo2(x string) string
}
Para obtener una lista de los nombres de los métodos para esta interfaz usando la reflexión:
t := reflect.TypeOf((*FooService)(nil)).Elem()
Esta línea recupera el reflect.Type para el tipo concreto que implementa la interfaz FooService.
for i := 0; i La función NumMethod() devuelve el número de métodos en la interfaz.
- Obtener los nombres de los métodos:
s = append(s, t.Method(i).Name)
La función Method(i) devuelve un objeto reflect.Method que representa el método en el índice i. El campo Nombre de este objeto contiene el nombre del método.
La lista resultante contendrá los nombres de los métodos ["Foo1", "Foo2"].
Explicaciones:
- La sintaxis (*FooService)(nil) se utiliza para crear un puntero a una instancia anónima de la interfaz FooService. Esto es necesario para obtener el reflect.Type para la interfaz.
- El método Elem() devuelve el reflect.Type para el tipo concreto que implementa la interfaz, en lugar del tipo de interfaz en sí.
- La función NumMethod() devuelve el número de métodos declarados en la interfaz, incluso si el tipo concreto implementa métodos adicionales.
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