基本的なswitch
文の記法
Java
switch rank {
case 1:
System.out.println("金メダル!");
break;
case 2:
System.out.println("銀メダル!");
break;
case 3:
System.out.println("銅メダル!");
break;
default:
System.out.println("メダルを獲得できませんでした");
break;
}
Go
switch rank {
case 1:
println("金メダル!")
case 2:
println("銀メダル!")
case 3:
println("銅メダル!")
default:
println("メダルを獲得できませんでした")
}
Javaのswitch
文の場合、暗黙的にfall-throughであるため、fall-throughされたくない場合はbreak
文を明示的に書く必要があります。
一方、Goのswitch
文は、暗黙的にfall-throughでなく、明示的なbreak
文は必要ありません。
複数条件のラベルを含むswitch
文
Java
switch n {
case 0:
System.out.println("凶です");
break;
case 1:
case 2:
System.out.println("吉です");
break;
case 3:
case 4:
System.out.println("中吉です");
break;
case 5:
System.out.println("大吉です");
break;
}
Go
switch n {
case 0:
println("凶です")
case 1, 2:
println("吉です")
case 3, 4:
println("中吉です")
case 5:
println("大吉です")
}
Goのswitch
文では、case
においてカンマ区切りで複数条件を一度に指定することができます。
一方(JDK11までの)Javaのswitch
文では、「カンマ区切りで複数条件を一度に指定する」という記法は使えません。上記ソースコードのように、fall-throughを使って書く必要があります。
結論
同じC-like languagesであっても、特にswitch
文の記法については、言語によって少なからぬ差が出ますね。