From 74c0a49e6d79e80b1f0a511afe3eece0cde6f43c Mon Sep 17 00:00:00 2001 From: Vincent Voyer Date: Wed, 2 Jul 2014 14:37:15 +0200 Subject: fix(go func factory): fix func factory example previous code did not run because outside main() code was done --- go.html.markdown | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'go.html.markdown') diff --git a/go.html.markdown b/go.html.markdown index a9a7de72..980fdc66 100644 --- a/go.html.markdown +++ b/go.html.markdown @@ -192,16 +192,26 @@ func learnFlowControl() { goto love love: + learnFunctionFactory() // func returning func is fun(3)(3) learnDefer() // A quick detour to an important keyword. learnInterfaces() // Good stuff coming up! } +func learnFunctionFactory() { + // Next two are equivalent, with second being more practical + fmt.Println(sentenceFactory("summer")("A beautiful", "day!")) + + d := sentenceFactory("summer") + fmt.Println(d("A beautiful", "day!")) + fmt.Println(d("A lazy", "afternoon!")) +} + // 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 - } +func sentenceFactory(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 -- cgit v1.2.3