From 6ac6fb019256b726de87f98f3fbbf0c794fcd50a Mon Sep 17 00:00:00 2001 From: xushiwei Date: Mon, 3 Jun 2024 01:43:17 +0800 Subject: [PATCH] README: defer --- README.md | 3 ++- _demo/defer/defer.go | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 _demo/defer/defer.go diff --git a/README.md b/README.md index 9d406da8..ff2784c3 100644 --- a/README.md +++ b/README.md @@ -172,7 +172,7 @@ Common Go syntax is already supported. Except for the following, which needs to * map (Very limited support) * panic (Limited support) * recover (Not supported yet) -* defer (Not supported yet) +* defer (Limited: defer in loops is not supported) * gc (Not supported yet) * chan (Not supported yet) * generics (Not supported yet) @@ -182,6 +182,7 @@ Here are some examples related to Go syntax: * [concat](_demo/concat/concat.go): define a variadic function * [genints](_demo/genints/genints.go): various forms of closure usage (including C function, recv.method and anonymous function) * [errors](_demo/errors/errors.go): demo to implement error interface +* [defer](_demo/defer/defer.go): defer demo * [goroutine](_demo/goroutine/goroutine.go): goroutine demo diff --git a/_demo/defer/defer.go b/_demo/defer/defer.go new file mode 100644 index 00000000..82d34e31 --- /dev/null +++ b/_demo/defer/defer.go @@ -0,0 +1,18 @@ +package main + +func f(s string) bool { + return len(s) > 2 +} + +func main() { + defer func() { + println("hi") + }() + if s := "hello"; f(s) { + defer println(s) + } else { + defer println("world") + return + } + defer println("bye") +}