Estou brincando com Golang e quero saber se existe uma maneira de listar todos os métodos ou propriedades que posso usar em uma variável. No Ruby, posso simplesmente usar some_variable.methods
para obter todos os métodos definidos em some_variable
. Existe algo semelhante em Golang?
Respostas:
6 para resposta № 1Sim você pode. Com reflexão, cada reflect.Type
O objeto pode enumerar todos os métodos expostos pelo tipo real. mas não é uma coisa muito comum ou idiomática a ser feita no Go:
import (
"fmt"
"reflect"
)
type Foo struct {
}
func (f Foo) Bar() {
}
func (f Foo) Baz() {
}
func main() {
t := reflect.TypeOf(Foo{})
for i := 0; i < t.NumMethod(); i++ {
fmt.Println(t.Method(i).Name)
}
}
// Output:
// Bar
// Baz
Isso também pode ser feito em reflect.Value
, dependendo do que você precisa.
Mas a verdadeira questão é - o que você está tentandoalcançar aqui? Você está tentando verificar se um tipo implementa uma interface ou algo parecido? Provavelmente existe uma solução mais simples para seu objetivo. Qual é o seu objetivo real?
2 para resposta № 2
Se você só precisa disso na fase de desenvolvimento guru ferramenta de desenvolvimento pode ajudá-lo muito.