Go言語:条件分岐:if

ifの話

  • ifelseelse ifで条件分岐を書く。
  • forと同じで、条件式はカッコが不要。
  • forの条件式の初期化と同じようなことができる。
    • if ~ else if ~ else内が1つの狭いスコープになっていて、変数はその中でのみ有効。
    • スコープの外から変数を参照すると、undefinedとしてエラーになる。
  • 閉じるブレース}の行からelseを改行して書くと、文法エラーになる。

試してみた

条件分岐:if

たとえば、こんな結果。

% 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の改行

試してみたの、例えばpatternAelseを、直前の閉じブレース}の行から改行すると、エラーになる。

% 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 }