Obtendo uma lista de nomes de métodos de uma interface
No Go, a reflexão permite inspecionar e manipular a estrutura interna de um programa em tempo de execução . Isso inclui a capacidade de acessar informações sobre um tipo de interface, como nomes de métodos.
Considere a seguinte interface:
type FooService interface {
Foo1(x int) int
Foo2(x string) string
}
Para obter uma lista dos nomes dos métodos para esta interface usando reflexão:
t := reflect.TypeOf((*FooService)(nil)).Elem()
Esta linha recupera o reflect.Type para o tipo concreto que implementa a interface FooService.
for i := 0; i A função NumMethod() retorna o número de métodos na interface.
- Obtenha os nomes dos métodos:
s = append(s, t.Method(i).Name)
A função Method(i) retorna um objeto reflect.Method que representa o método no índice i. O campo Nome deste objeto contém o nome do método.
As listas resultantes conterão os nomes dos métodos ["Foo1", "Foo2"].
Explicações:
- A sintaxe (*FooService)(nil) é usada para criar um ponteiro para uma instância anônima da interface FooService. Isso é necessário para obter o reflect.Type para a interface.
- O método Elem() retorna o reflect.Type para o tipo concreto que implementa a interface, em vez do próprio tipo de interface.
- A função NumMethod() retorna o número de métodos declarados na interface, mesmo que o tipo concreto implemente métodos adicionais.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3