3 回答
TA贡献1811条经验 获得超5个赞
您的类型不匹配,因为您的结构成员需要 func(param ...interface) 而您正试图将其传递给 func(map[string]command)
有关接口类型如何工作的说明,请参见此处。
如果您按如下方式更改代码并为结构成员提供简单的类型 interface{},则它可以采用任何类型,包括我认为您想要的函数。
package main
import "fmt"
type command struct {
help string
handler interface{}
}
func showHelp(commands map[string]command) {
fmt.Println("Help:")
for c, h := range commands {
fmt.Println(c, "->", h.help)
}
}
func main() {
// Map to store commands
commands := make(map[string]command)
// Adding help command
commands["help"] = command{"show this information", showHelp}
showHelp(commands)
}
TA贡献1816条经验 获得超6个赞
我想你正在寻找这样的东西;
package main
import "fmt"
type command struct {
help string
handler func()
}
func main() {
c := command{}
c.handler = func () {
fmt.Println("Hello, playground")
}
c.handler()
}
至少我会这样做。将 func 类型的字段放在您的结构上,然后在任何方便的地方使用闭包为其分配方法。
- 3 回答
- 0 关注
- 144 浏览
添加回答
举报