【问题标题】:What's the Golang's equivalent of Ruby's "methods" method?Golang 相当于 Ruby 的“方法”方法是什么?
【发布时间】:2016-12-21 12:02:25
【问题描述】:

我正在玩 Golang,我想知道是否有一种方法可以列出我可以在变量上使用的所有方法或属性。在 Ruby 中,我可以简单地使用 some_variable.methods 来获取在 some_variable 上定义的所有方法。 Golang中有没有类似的东西?

【问题讨论】:

标签: ruby methods go reflection


【解决方案1】:

是的,你可以。通过反射,每个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 上完成,具体取决于您的需要。

但真正的问题是 - 您想在这里实现什么目标?您是否尝试检查一个类型是否实现了接口或类似的东西?您的目标可能有一个更简单的解决方案。你的实际目标是什么?

【讨论】:

  • 谢谢。我只是想快速了解一下我目前正在学习 Golang 时可以在变量上使用的所有方法或属性。
  • @user130268 标准库的文档是一个更好的解决方案恕我直言:)
【解决方案2】:

如果你只在开发阶段需要这个guru开发工具可以帮到你很多。

【讨论】:

    猜你喜欢
    • 2020-01-18
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2020-02-28
    • 2019-02-01
    • 2021-11-27
    相关资源
    最近更新 更多