Golangで独自の型を作成する方法
既存のstringやint等のデータ型だけでは表現しきれない部分が発生すると思います。
そのような状況において、Golangでは「type」キーワードを使用することで任意の型を作成することができます。
type 独自型の名前 データ型の内容
基本的な書き方は上記の通りです。
typeで独自型を作成する具体的なコード例
以下のコードはint型ではなく、数値を受け取るGrade型という独自のデータ型を作る例です。
package main
import (
"fmt"
)
type Grade int32 // Grade型を作成
func main() {
var grade Grade // Grade型の変数を定義することになる
fmt.Println(grade) // 変数gradeの値を出力
fmt.Printf("%T\n", grade) // 変数gradeの型を出力
}
出力結果
0
main.Grade
独自型と既存のデータ型では計算できない
上記の例だとGrade型は数値しか受け取れないため、int型と同じ扱いになると考えられそうですが、まったく別物になります。
そのため、どちらも数値を扱う型ですがGrade型とint型で足し算や引き算を行おうとしてもできません。
var i int = 5
var grade Grade = 3
i + grade // => エラーが発生する
上記のようにint型とGrade型は異なるデータ型となり、int型はint型と、Grade型はGrade型でないと計算することが不可能となります。