1. cia_rana

    Posted

    cia_rana
Changes in title
+[Go] for { select { default: break } } ではループを抜けられない
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,29 @@
+自分を含め、意外と間違っている人が多いのですが、
+
+```go
+for {
+ select {
+ default:
+ break
+ }
+}
+```
+
+では for ループを抜けることができません。
+これは switch の case や default 内で break を使っても switch は抜けらますが、その外側のループは抜けられないことと同じです。
+
+恐らく default では例外処理を行うことが多く、例外処理のテストを適切に行っていないためこのバグが潜在しているものと思われます。
+
+そこで、Labeled Break を使いましょう!
+
+```go
+L:
+ for {
+ select {
+ default:
+ break L
+ }
+ }
+```
+
+これでラベルの貼られた for から break L で抜けることができます。