我是Golang初学者,现在已经学习了几天。我已经了解了很多语法,并开始对此感到满意。今天我在下面的Go中偶然发现了一个片段
log.Fatal(http.ListenAndServe(":3000", handlers.CORS(originsOk, headersOk,
methodsOk)(router)))
Run Code Online (Sandbox Code Playgroud)
将ListernAndServe具有以下签名
func ListenAndServe(addr string, handler Handler) error
Run Code Online (Sandbox Code Playgroud)
现在,令人困惑的部分是Handler上述服务器代码中的参数。为什么语法如下所示
handlers.CORS(originsOk, headersOk, methodsOk)(router)
Run Code Online (Sandbox Code Playgroud)
是(router)参数列表的一部分吗?
有人可以分解这个语法让我理解。
mko*_*iva 11
handlers.CORS返回一个函数,您正在使用router参数调用该函数。然后,该函数调用返回一个处理程序,然后将该处理程序最终传递给ListenAndServe。
基本上,表达式与此等效:
f := handlers.CORS(originsOk, headersOk, methodsOk)
h := f(router)
log.Fatal(http.ListenAndServe(":3000", h))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |