typeを用いた既存の型を拡張する

func ProcessTask(id, priority int) {
}

という関数を考える時、2つの引数id, priorityはどちらもint型。 なので、もし間違えてidとpriorityの順序を逆にして使ってしまっても普通に動いてしまう。

これを防ぐために使えるのがtype

以下のように、int型をtypeを使って拡張し、ID型Priority型を作ることができる。

type ID int
type Priority int

func ProcessTask(id ID, priority Priority) {
}

このようにすれば、引数の順序を間違えても、コンパイルエラーとなり、間違いに気づくことができる。

参考

第3章 型システム―型を用いた安全なプログラミング:はじめてのGo―シンプルな言語仕様,型システム,並行処理|gihyo.jp … 技術評論社