Go Conference

Room A

Intermediate

20 mins.

Goにはconst型修飾がありません 言い換えると、型によって変数の不変性を担保できません なぜconst型修飾がないのでしょうか?

実は言語設計者は10年以上前から機能の要否を議論してきました しかし、有力な解決案は見つかっていないのが現状です 結果としてconst型修飾がない代わりに、言語の互換性や自由度を維持してきました

本セッションは、これらの議論を紹介し、開発者としてconst型修飾を諦める理由を提供します また、const型修飾がないことで得られている恩恵を紹介します 本発表を聞いて、言語に対する不満を減らし、Goの良さを知るきっかけになれば幸いです

免責

  • 言語にconstが不要だと主張するものではありません
  • 将来良い解決策が見つかれば、constのようなものが追加される可能性は十分あります

前提

  • constant(定数)とconst型修飾を区別し、後者を議論対象とします
  • const型修飾=readony=非mutは特に区別せず、以後 constと呼ぶことにします

以下が発表の概要です (実際の発表では構成がかわるかもしれません)

  • const型修飾について
  • 不変性を担保する機能が難しい話: オブジェクトの厳密な不変性を保証するには結局所有権が必要になってしまう
  • 読み取り専用型修飾の機能が難しい話: 読み取り専用の修飾をつけたとしても関数の重複定義の問題がでてしまう
  • const-poisoningの紹介: 型修飾を増やすと、API設計が難しくなる
  • 不変性を担保したいときのヒント

参考

Kazuhiro Sakurayama

Kazuhiro Sakurayama

LINEヤフー株式会社

2020年 ヤフー株式会社入社