【发布时间】:2015-07-22 21:38:40
【问题描述】:
我试图理解 Go 在创建带有参数的匿名函数与让该函数充当闭包之间的区别。这是一个不同的例子。
带参数:
func main() {
done := make(chan bool, 1)
go func(c chan bool) {
time.Sleep(50 * time.Millisecond)
c <- true
}(done)
<-done
}
作为闭包:
func main() {
done := make(chan bool, 1)
go func() {
time.Sleep(50 * time.Millisecond)
done <- true
}()
<-done
}
我的问题是,第一种形式何时比第二种形式更好?你会为这种事情使用参数吗?我唯一能看到第一种形式有用的是从另一个函数返回func(x, y)。
【问题讨论】:
-
github.com/golang/go/wiki/CommonMistakes - 这将为 Go 关闭的疑问提供清晰的画面