menu
書いてる野郎
orebike@gmail.com
考え方としては Java のインターフェースと同じ。それがあるとそのように見なして操作できますよということ。 Java の場合実装を強制することと型システムで強力にそれを構築しているが Go はどうなのか?
型付けがが非常に強い言語の明示されたダックタイピング表明が Go でのインターフェースと呼べそうだ。
このようにシグネチャを列挙する。これがインターフェース。
type Hoge interface { Piyo() string Fuga() string }
見ればわかるが、構造体のメソッド版定義になっている、それに type で名前をつける。
何にも実装しなくていい interface は interface{}
となるのでこのインターフェースは何でも入れられる型として使うことができる。
構造体に対して interface に定義されているシグネチャでメソッドを定義するだけ、具体的に interface を名指しで何かすることは無い。
interface のシグネチャのメソッドを全部定義したらその構造体が interface を備えていると見なす。 なのでその構造体の関係する部位には interface の記述はまったく出てこない。