April 2022
Beginner to intermediate
464 pages
6h 44m
Japanese
Goで型を定義するにはtypeキーワードと名前、その実体を並べます。実体は他の型を指定します。
// プリミティブ型
type SourceType int
// 構造体
type Person struct {
Name string
Age int
}
intやstringなどに対して「新しい名前と型」を与えます。このサンプルでは、intを元にSourceTypeを作っています。メモリ上のデータはintと同じく、64ビットOS上では8バイトのメモリを消費します。しかし、intの変数をSourceTypeにそのままは代入できませんし、その逆もできません。型が違うからです。Goではメモリのレイアウトやデータの実体が同じかどうかではなく、型によって代入できるかどうかが決まります。
これだけ見ると、あまりメリットがないように見えるかもしれませんし、元の型をそのまま使えば良いと思うかもしれませんが、次のようなメリットがあります。
intのようなプリミティブ型に対して型を作ると、列挙型を作るときに特定の要素のみを受け取ったり、他の列挙型やプリミティブ型と混ざることを防げる(間違えるとコンパイルエラーになる)
構造体の場合、型の実体が長くなるので、コードが短くなる
新しい型にはそれ固有のメソッドが定義できる
型によるエラーのチェックを強化するとともに、より大規模なアプリケーションを実装するための基礎となります。これから先の節でいくつもサンプルが登場しますので、今はピンと来なくても、これから読み進めると理解が深まるでしょう。
なお、Goの世界では型は 一級市民 ではありません。一級市民というのは、値として扱って変数に格納したりできることを意味します ...
Read now
Unlock full access