Go言語におけるブロックとスコープ
DRANK

Go言語には「ブロック」と「スコープ」という似たような2つの概念があります。「ブロックとスコープはどう違うの?」という疑問に答えてみたいと思います。ブロックとはソースコードの「かたまり」のことブロックとはソースコードをある単位でまとめた「かたまり」です。最もわかりやすい例は、記号 { ... } でくくられたステートメント群です。{ var int x = 1 println(x) } これを「明示的ブロック」と言います。「明示的ブロック」以外にも「暗黙のブロック」というものがあり、ユニバースブロック: 全てのGoのソースコードの外側を包んでいる仮想的なブロックパッケージブロック: 1パッケージ内の全ソースコードを包含するブロックファイルブロック: 1ファイル内の全ソースコードを包含するブロックif, for, switchブロック: if,for,swtich文それ自体がブロックとなるswitch, selectにおける節ブロック: case節やdefault節自体がブロックとなるブロックは入れ子にすることができます。if, for, switchブロックif, for, switchブロックで注意が必要なのは、{...} だけがブロックなのではなくて、if から } までが暗黙ブロックであるということです。 if x := 1; x…

zenn.dev
Related Topics: Go (programming language)