From 9b491561e55e90b9b209f0f7b7aaa4de982b0721 Mon Sep 17 00:00:00 2001 From: "jian.han" Date: Thu, 11 Jan 2018 15:45:43 +1000 Subject: [PATCH] added defer nil func example --- defer/main.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 defer/main.go diff --git a/defer/main.go b/defer/main.go new file mode 100644 index 0000000..2107a62 --- /dev/null +++ b/defer/main.go @@ -0,0 +1,17 @@ +package main + +import "fmt" + +// Sample code is taken from online tutorial https://blog.learngoprogramming.com/gotchas-of-defer-in-go-1-8d070894cb01 +// it demostrate all the common GOTCHA when using defer. + +// If a deferred func evaluates to nil, execution panic when surrounding func ends not when defer is called +func nilFuncDefer() { + var run func() = nil + defer run() + fmt.Println("runs") +} + +func main() { + nilFuncDefer() +}