Golang 相当于 Ruby 的 "methods" 方法?



我正在玩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开发工具可以帮助您很多。

相关内容

  • 没有找到相关文章

最新更新