0
0

More than 3 years have passed since last update.

初心者レベルでも気づく、JavaとGoのswitch文の記述の違い

Posted at

基本的な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文の記法については、言語によって少なからぬ差が出ますね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0