August 2025
Beginner to intermediate
552 pages
7h 58m
Japanese
「Don't repeat yourself(同じことを繰り返すな)」は、ソフトウェア開発における「金言」となっています。データ構造や関数は、再作成するよりも再利用するほうが好ましいのです。
Goのような厳密に型付けされた言語では、関数のすべての引数の型も構造体のすべてのフィールドの型も、コンパイル時にわかっている必要があります。型を厳密にチェックすることで、バグの発生を未然に防ぐようにしているわけです。しかし、「型だけは違うが、ロジック(処理内容)は同じ関数」や「(一部の)フィールドの型だけが違っていて、ほかは同じ構造体」を、類似のコードを繰り返さずに書ければ便利であることも事実です。
Goではジェネリクスによってこれが実現されています。きちんと型のチェックをしつつ、同じようなコードの繰り返しを防いでくれる仕組みです。
この章では、Go言語のジェネリクスについて次のような事柄を説明します。
Goは静的型付け言語であり、コードのコンパイル時に変数や引数の型がチェックされます。マップ、スライス、チャネルなどの事前宣言された型やlen、cap、makeなどの関数では異なる型を扱うことができますが、Go 1.18まではユーザーが定義した型や関数ではこのようなことはできませんでした。
コードが実行されるまで型が決まらないことがある動的型付け言語に慣れている人は、最初のうち、ジェネリクスの意味合いがよく理解できないかもしれません。ジェネリクスを「型パラメータ(型引数)」と捉えるとわかりやすいでしょう。ジェネリクスでは型が引数(パラメータ)のような役目をします。 ...
Read now
Unlock full access