Go支持匿名函数/闭包,这使我想起了Python中的Lambda,什么时候在代码中使用它们很理想?
2 回答
LEATH
TA贡献1936条经验 获得超6个赞
jnml已经给出了匿名函数有用的一种情况。
我补充说,当您只需要传递一个不会在其他地方调用的函数时,就可以使用它们:
Goroutine发射:
go func() {
...
}()
将一些代码传递给函数:
http.Handle("/ws", websocket.Handler(func(ws *websocket.Conn) {
...
开满天机
TA贡献1786条经验 获得超13个赞
我认为函数字面量是最有用的,因为它们是闭包。考虑例如:
type handler func()
func HanldeSomething(h handler) {
//...
h()
// ...
}
func Elsewhere() {
var foo int
HandleSomething(handler(func(){
fmt.Println("debug: foo in Elsewhere is", foo)
}))
}
这样,在h调用when时HandleSomething,可以使用的上下文说/做某事Elsewhere。在许多情况下这很方便。
- 2 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消