diff --git a/defer.go b/defer.go deleted file mode 100755 index 6d20e13..0000000 --- a/defer.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import "fmt" - - -func hoge() { - defer fmt.Println("3") // 4th - defer fmt.Println("4") // 3rd - fmt.Println("5") // 2nd -} - -func fuga() { - defer fmt.Println("1") // 5th - fmt.Println("2") // 1st - hoge() -} - -func main() { - fuga() -} - diff --git a/func/defer.go b/func/defer.go new file mode 100755 index 0000000..6d20e13 --- /dev/null +++ b/func/defer.go @@ -0,0 +1,21 @@ +package main + +import "fmt" + + +func hoge() { + defer fmt.Println("3") // 4th + defer fmt.Println("4") // 3rd + fmt.Println("5") // 2nd +} + +func fuga() { + defer fmt.Println("1") // 5th + fmt.Println("2") // 1st + hoge() +} + +func main() { + fuga() +} + diff --git a/func/loop.go b/func/loop.go new file mode 100644 index 0000000..8788158 --- /dev/null +++ b/func/loop.go @@ -0,0 +1,45 @@ +package main + +import "fmt" + +// NG Sample +func hoge() { + for i := 0; i < 5; i++ { + f := func() { + fmt.Println(i) + } + defer f() + } +} + +// OK Sample +func fuga() { + for i := 0; i < 5; i++ { + i := i // important + f := func() { + fmt.Println(i) + } + defer f() + } +} + +func main() { + hoge() + /* + 5 + 5 + 5 + 5 + 5 + */ + fmt.Println() + fuga() + /* + 4 + 3 + 2 + 1 + 0 + */ +} +