Learn function decorators with Go

Added snippet about using closures as function decorators in Go. Also
removed a few extra whitespaces.
This commit is contained in:
Sam Zaydel 2014-06-29 08:12:58 -07:00
parent e881ba74f3
commit 8b6920a70a

View File

@ -196,6 +196,21 @@ love:
learnInterfaces() // Good stuff coming up!
}
// Decorators are common in other languages. Same can be done in Go
// with function literals that accept arguments.
func learnFunctionFactory(mystring string) func(before, after string) string {
return func(before, after string) string {
return fmt.Sprintf("%s %s %s", before, mystring, after) // new string
}
}
// Next two are equivalent, with second being more practical
fmt.Println(learnFunctionFactory("summer")("A beautiful", "day!"))
d := learnFunctionFactory("summer")
fmt.Println(d("A beautiful", "day!"))
fmt.Println(d("A lazy", "afternoon!"))
func learnDefer() (ok bool) {
// Deferred statements are executed just before the function returns.
defer fmt.Println("deferred statements execute in reverse (LIFO) order.")