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

令人困惑的函数调用语法

令人困惑的函数调用语法

Go
倚天杖 2023-06-12 16:51:16
我是一名 Golang 初学者,我已经学习了几天了。我已经学习了大量它的语法并开始适应它。今天我偶然发现了下面 Go 中的一个片段log.Fatal(http.ListenAndServe(":3000", handlers.CORS(originsOk, headersOk,  methodsOk)(router)))具有ListernAndServe以下签名func ListenAndServe(addr string, handler Handler) error现在令人困惑的部分是Handler上面服务器代码中的参数。为什么语法像下面这样划分 handlers.CORS(originsOk, headersOk, methodsOk)(router)是(router)参数列表的一部分吗?有人可以分解这个语法让我理解吗?
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

handlers.CORS返回一个函数,您正在使用路由器参数调用该函数。然后该函数调用返回一个处理程序,然后该处理程序最终传递给 ListenAndServe。

基本上表达式等同于:

f := handlers.CORS(originsOk, headersOk, methodsOk)
h := f(router)
log.Fatal(http.ListenAndServe(":3000", h))


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

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