我正在玩Golang,我想知道是否有一种方法可以列出我可以在变量上使用的所有方法或属性。在Ruby中,我可以简单地使用some_variable.methods
来获得some_variable
上定义的所有方法。在Golang也有类似的事情吗?
可以。通过反射,每个reflect.Type
对象都可以列举出实际类型暴露的所有方法。但在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
这也可以在reflect.Value
上完成,这取决于您需要什么。
如果您只在开发阶段需要这个,那么guru开发工具可以帮助您很多。