/ / Qual é o equivalente de Golang ao método "métodos" de Ruby? - rubi, métodos, ir, reflexão

Qual é o equivalente do método "métodos" de Ruby para o Golang? - rubi, métodos, ir, reflexão

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 № 1

Sim 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.