Go 支持匿名函数/闭包,这让我想起了 Python 中的 Lambda,什么时候在你的代码中使用它们比较理想?
问问题
3923 次
2 回答
3
jnml 已经给出了匿名函数有用的一种情况。
我要补充一点,当您只需要传递一个不会在其他地方调用的函数时,您可以使用它们:
Goroutine 启动:
go func() {
...
}()
将一些代码传递给函数:
http.Handle("/ws", websocket.Handler(func(ws *websocket.Conn) {
...
于 2012-12-15T09:47:52.460 回答
3
我认为函数文字最有意义,因为它们是闭包的事实是有用/使用的。考虑例如:
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
被调用时,HandleSomething
它可以使用Elsewhere
. 这在很多情况下都很方便。
于 2012-12-15T09:34:56.867 回答