Я видел это здесь раньше. Но я не понимаю ответов.
Как мне вызвать метод из строкового значения. Итак, если
у меня есть много методов, которые имеют
func (c *something) whateverName(whatever map[string]interface{}) {
}
одинаковый тип аргумента в каждом из них. no return et c ... Буквально единственная разница в имени метода.
Я хочу сделать что-то вроде этого, и я просто не могу заставить его работать. Я просто хочу вызвать правильный метод из значения "var myMethod string":
func (c something) foo(m map[string]interface{}) {
fmt.Println("foo..")
//do something with m
}
func main() {
myMethod := "foo"
message := make(map[string]interface{})
//fill message with stuff...
c := something{} //this is just a hypothetical example...
vt := reflect.ValueOf(c)
vm := vt.MethodByName(myMethod)
vm.Call([]reflect.Value{reflect.ValueOf(message)})
}
Я, очевидно, не понимаю, как работает отражение.