gpt4 book ai didi

ruby - Golang 中 Ruby 的 "methods"方法的等价物是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:49:38 25 4
gpt4 key购买 nike

我正在玩 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 上完成,具体取决于您的需要。

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

关于ruby - Golang 中 Ruby 的 "methods"方法的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38952419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com