我有这个完美运行的代码:
package main
import (
"fmt"
)
var funcMap = map[string]interface{}{
"hello": hello,
}
func main() {
callDynamically("hello")
}
func callDynamically(name string) {
funcMap[name].(func())()
}
func hello() {
fmt.Println("hello")
}
但是如果我尝试hello()像这样定义我的结构类型,我的大脑会发疯:
package main
import (
"fmt"
)
type myType struct {
field1 string
field2 string
funcMap map[string]interface{}
}
func main() {
mt := &myType{
field1: "qwe",
field2: "asd",
funcMap: map[string]interface{}{
"hello": (*myType).hello,
},
}
mt.callDynamically("hello")
}
func (mt *myType) callDynamically(name string) {
mt.funcMap[name].(func())()
}
func (mt *myType) hello() {
fmt.Println("hello")
}
https://play.golang.org/p/pPvmaL22_Td
我收到了这个错误:
panic: interface conversion: interface {} is func(*main.myType), not func()
func()当我的函数在callDynamically自定义结构类型上定义时,我真的不明白如何调用。
有什么帮助吗?
谢谢你。
开心每一天1111
ABOUTYOU
一只甜甜圈
随时随地看视频慕课网APP
相关分类