在Java中,我可以做类似的事情
derp(new Runnable { public void run () { /* run this sometime later */ } })
然后稍后在方法中“运行”代码。处理(匿名内部类)很痛苦,但是可以做到。
Go是否有可以促进函数/回调作为参数传递的内容?
是的,请考虑以下示例:
package main import "fmt" // convert types take an int and return a string value. type convert func(int) string // value implements convert, returning x as string. func value(x int) string { return fmt.Sprintf("%v", x) } // quote123 passes 123 to convert func and returns quoted string. func quote123(fn convert) string { return fmt.Sprintf("%q", fn(123)) } func main() { var result string result = value(123) fmt.Println(result) // Output: 123 result = quote123(value) fmt.Println(result) // Output: "123" result = quote123(func(x int) string { return fmt.Sprintf("%b", x) }) fmt.Println(result) // Output: "1111011" foo := func(x int) string { return "foo" } result = quote123(foo) fmt.Println(result) // Output: "foo" _ = convert(foo) // confirm foo satisfies convert at runtime // fails due to argument type // _ = convert(func(x float64) string { return "" }) }
播放:http://play.golang.org/p/XNMtrDUDS0
导览:https : //tour.golang.org/moretypes/25(函数闭包)