回答編集履歴

1

実例を追記

2023/10/02 03:22

投稿

ikedas
ikedas

スコア4364

test CHANGED
@@ -6,3 +6,8 @@
6
6
 
7
7
  そういう巨大な条件分岐をswitch文にするの、私は好きですけどね。
8
8
 
9
+ 実例。たとえば、[この関数のソースコード](https://github.com/golang/go/blob/go1.21.1/src/go/scanner/scanner.go#L790)はGoコンパイラの一部ですが、後のほうにけっこう長いswitch文がありますね。コンパイラでのトークン毎の処理などは全ての場合を列挙するしかないものですが、Go自身でもそのような処理の記述にswitch文を使っているということは、これ以上によいものはないということなのではないでしょうか。
10
+
11
+ こういう「とてつもない」switch文はCでもよく見られたもの ([例](https://git.savannah.gnu.org/gitweb/?p=sed.git;a=blob;f=sed/compile.c;h=e81a50a3ed8fcf335d604cfe2832548fa8d63d08;hb=5420e97c91905562ddd7d9d896b655dbfb14ada6#l970)) ですし、それが特に悪いことだとは考えられていなかったからこそGoにも受け継がれたのでしょう (ケース毎にbreakを入れなくてもよくなったのは改善ですね)。私は、多数の場合分けを簡素に表現できてメンテナンスもしやすいと思うので「大変」とは感じません。
12
+
13
+ 感想でした。