gpt4 book ai didi

go - 在 Go 中按名称调用结构及其方法?

转载 作者:IT老高 更新时间:2023-10-28 13:01:07 24 4
gpt4 key购买 nike

我在这里找到了一个函数调用MethodByName() http://golang.org/pkg/reflect/#Value.MethodByName但这不是我想要的! (也许是因为我不知道如何使用它......我找不到任何例子)。我想要的是:

type MyStruct struct {
//some feilds here
}
func (p *MyStruct) MyMethod {
println("My statement.");
}

CallFunc("MyStruct", "MyMethod");
//print out "My statement."

所以我想,首先我需要像 StructByName() 这样的东西,然后将它用于 MethodByName(),对吗!?

最佳答案

要调用对象的方法,首先使用reflect.ValueOf。然后通过名字找到方法,最后调用找到的方法。例如:

package main

import "fmt"
import "reflect"

type T struct {}

func (t *T) Foo() {
fmt.Println("foo")
}

func main() {
var t T
reflect.ValueOf(&t).MethodByName("Foo").Call([]reflect.Value{})
}

关于go - 在 Go 中按名称调用结构及其方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8103617/

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