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 }