为了账号安全,请及时绑定邮箱和手机立即绑定

什么时候在Go中使用匿名函数?

什么时候在Go中使用匿名函数?

Go
守着星空守着你 2021-05-20 18:14:50
Go支持匿名函数/闭包,这使我想起了Python中的Lambda,什么时候在代码中使用它们很理想?
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

jnml已经给出了匿名函数有用的一种情况。


我补充说,当您只需要传递一个不会在其他地方调用的函数时,就可以使用它们:


Goroutine发射:


go func() {

    ...

}()

将一些代码传递给函数:


http.Handle("/ws", websocket.Handler(func(ws *websocket.Conn) {

  ...


查看完整回答
反对 回复 2021-05-24
?
开满天机

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。在许多情况下这很方便。


查看完整回答
反对 回复 2021-05-24
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信