🦌
Goのプリミティブ型とかコンポジット型とか日本語をまとめる
動機
Golangにおける、プリミティブ型やコンポジット型って何だっけ?となることが多いのでまとめてみました。
対応表
日本語 | カタカナ英語 | 説明 | 例 |
---|---|---|---|
組み込み型 | プリミティブ型 | 予めGo言語に用意された基本のデータ型 | int、float64、complex64、string、bool、error とか |
なし | コンポジット型 | 複数のデータを1つの集合として表す型 | 構造体、配列、スライス、マップ、チャネル |
なし | ユーザー定義型 | プリミティブ型やコンポジット型を基底として新しく定義する型 |
type MyError error や type Person struct { Name string }
|
なし | 型リテラル | 型の具体的な定義を書き下した型の表現方法 |
[5]int や struct { Name string }
|
複合リテラル | コンポジットリテラル | 型リテラルの中で、コンポジット型(構造体や配列など)で、型と値がセットになった記述方法 |
struct { Name string }{ Name: "Gopher", )
|
型変換 | 型キャスト (type casting) | 別の型を変換すること |
var i int = 100 var f float64 = float64(i)
|
なし | 型エイリアス(type alias) | 型に別名(エイリアス)を定義する(Go1.19から追加)。エイリアスにはキャストしない分、メソッドも定義できない | type Name = string |
なし | 型アサーション(type assertions) | インターフェースの値の基になる具体的な値を利用する手段。しないとpanicを起こす(interfaceがどんな内容でも受け取れるため) |
var i interface{} = "hello" s, ok := i.(string)
|
なし | 型スイッチ | 型で分岐処理を記述する際にswitch...case を使う |
switch v := i.(type) { case T: // Tの処理 default: // デフォルトの処理 }
|
匿名の構造体(無名構造体) | 無名struct(anonymous struct) | 名前をつけずに定義する無名の構造体。他の場所から参照はできないので1度だけ使用する際などに便利 |
teststruct := struct { Message string Number int }{ "hello", 1, }
|
意味
※ リテラルとは、プログラムのソースコードにおいて使用される、数値や文字列を直接に記述した定数 のこと。
※ (ここでいう)エイリアスとは、別名のことでオリジナルの型と同じ動きをする。
※ アサーションとは、あるコードが実行される時に満たされるべき条件を記述して実行時にチェックする仕組み。
Discussion