一个关于接口的小问题

weixin_38048698 2019-09-20 10:37:33
```
var fi interface{}
fi = func(){
fmt.Println("jjjjj")
}
switch f := fi.(type){
case bool:
fmt.Println("func",f)
case interface{}:
fmt.Println("interface",f)
// f() // 直接调用会报错cannot call non-function f (type interface {})
default:
fmt.Printf("unknown:%#v\n",f)
}
```

如上代码,fi这个接口变量被赋值为一个函数,如何把这个函数取出来调用呢?
...全文
28 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38087180 2019-09-20
  • 打赏
  • 举报
回复
增加一个case func()分支就可以,放在interface分支上面 ```go package main import ( "fmt" ) var fi interface{} func main() { fi = func() { fmt.Println("jjjjj") } //直接调用 fi.(func())() switch f := fi.(type) { case bool: fmt.Println("func", f) case func(): f() case interface{}: fmt.Println("interface", f) default: fmt.Printf("unknown:%#v\n", f) } } ```

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧