Go言語:条件分岐:if
ifの話
if
、else
、else if
で条件分岐を書く。for
と同じで、条件式はカッコが不要。for
の条件式の初期化と同じようなことができる。if ~ else if ~ else
内が1つの狭いスコープになっていて、変数はその中でのみ有効。- スコープの外から変数を参照すると、
undefined
としてエラーになる。
- 閉じるブレース
}
の行からelse
を改行して書くと、文法エラーになる。
試してみた
たとえば、こんな結果。
% GOPATH=$PWD go run src/sample.go more than 30 value: 52 more than 40
スコープ
試してみたのpatternB
のコメントアウトを解くと、エラーになる。
% GOPATH=$PWD go run src/sample.go # command-line-arguments src/sample.go:40: undefined: i
試してみたのpatternC
のコメントアウトを解いても、やはりエラーになる。
% GOPATH=$PWD go run src/sample.go # command-line-arguments src/sample.go:52: undefined: message
つまり、if ~ else if ~ else
の間が、スコープになっている、ということ。
エラー:else
の改行
試してみたの、例えばpatternA
のelse
を、直前の閉じブレース}
の行から改行すると、エラーになる。
% GOPATH=$PWD go run src/sample.go # command-line-arguments src/sample.go:22: syntax error: unexpected semicolon or newline before else src/sample.go:26: non-declaration statement outside function body src/sample.go:27: syntax error: unexpected }