From ded11e254f75edfd83fc816fe609431e182f5155 Mon Sep 17 00:00:00 2001 From: Quint Guvernator Date: Sun, 2 Feb 2014 15:11:15 -0500 Subject: added defer example decided not to use file i/o as an example because external file access is rare in other tutorials. --- go.html.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'go.html.markdown') diff --git a/go.html.markdown b/go.html.markdown index d1a0ae34..a66e8c4b 100644 --- a/go.html.markdown +++ b/go.html.markdown @@ -7,6 +7,7 @@ contributors: - ["Sonia Keys", "https://github.com/soniakeys"] - ["Christopher Bess", "https://github.com/cbess"] - ["Jesse Johnson", "https://github.com/holocronweaver"] + - ["Quint Guvernator", "https://github.com/qguv"] --- Go was created out of the need to get work done. It's not the latest trend @@ -180,9 +181,21 @@ func learnFlowControl() { goto love love: + learnDefer() // A quick detour to an important keyword. learnInterfaces() // Good stuff coming up! } + + +func learnDefer() (ok bool) { + // deferred statements are executed just before the function returns. + defer fmt.Println("deferred statements execute in reverse (LIFO) order.") + defer fmt.Println("\nThis line is being printed first because") + // defer is commonly used to close a file, so the function closing the file + // stays close to the function opening the file + return true +} + // Define Stringer as an interface type with one method, String. type Stringer interface { String() string -- cgit v1.2.3