golangにおける型定義
なんかこう、Clangにおける typedef じみてると言うか何というか
日本語だとここがわかりやすい
最小限の構造体定義は struct { hoge int } になる。この時点ではstruct型の値と言えるかもしれない。 var fuga struct { hoge int }{hoge:10} で、変数fugaにstruct型の値が入ってる状態になる(そしてそのstruct型の値の中のhogeには10が入ってる)
typeという予約語を用いると、既存の型や型リテラルに別名をつけることができます。言語仕様にも同じようなことが書いてあります。
との事で、既存の型に別名を与え(そして既存の型とは違う型であると宣言する)るのがtype予約語
type Hoge struct { hoge int } で、Hoge型を定義する事が出来る
「別名を与える」なのでなんかこう、継承っぽい気配がするけど、継承ではない。
code:go
// なので
type UUID string
UUID = "hoge"
log.Printf(UUID) // これはコンパイルエラーになる。UUIDはstringではない
でも元のメソッドは使えるから、継承っぽいっちゃぽい
では、type OnClick func(callee Button) みたいな感じで、特定のメソッド形式を独自型にして、デリゲートのような物を作る例がある