我主要是一名 PHP 开发人员,最近我开始研究 Go。在 PHP 中,我可以这样做:<?phpclass TestClass { public function testMethod() { echo "Hello!\n"; }}$obj = new TestClass();$method_name = "testMethod";$obj->{$method_name}();?>输出为:Hello!。我知道以下不是一个完美的比较,因为 Go 没有类,但我想知道我是否可以对 Go 中模块的导出属性做类似的事情。例如这样的事情(我知道这不是有效的 Go 代码):package mainimport "fmt"func main() { name := "Println" fmt[name]("Hello!")}这无论如何可能吗?如何完成类似的事情?谢谢你。
2 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
我猜你正在寻找“反射”。
package main
import (
"fmt"
"reflect"
)
type sayer struct {
said int
}
func (s *sayer) SayHello() {
fmt.Println("Hello")
}
func main() {
s := &sayer{}
cmd := "SayHello"
reflect.ValueOf(s).MethodByName(cmd).Call(nil)
}
- 2 回答
- 0 关注
- 239 浏览
添加回答
举报
0/150
提交
取消