Go言語 / Basic / インターフェース

Go言語 / Basic / インターフェース

考え方

考え方としては Java のインターフェースと同じ。それがあるとそのように見なして操作できますよということ。 Java の場合実装を強制することと型システムで強力にそれを構築しているが Go はどうなのか?

型付けがが非常に強い言語の明示されたダックタイピング表明が Go でのインターフェースと呼べそうだ。

interface を定義する

このようにシグネチャを列挙する。これがインターフェース。

type Hoge interface {
    Piyo() string
    Fuga() string
}

見ればわかるが、構造体のメソッド版定義になっている、それに type で名前をつける。

何にも実装しなくていい interface は interface{} となるのでこのインターフェースは何でも入れられる型として使うことができる。

interface を実装する

構造体に対して interface に定義されているシグネチャでメソッドを定義するだけ、具体的に interface を名指しで何かすることは無い。

interface のシグネチャのメソッドを全部定義したらその構造体が interface を備えていると見なす。 なのでその構造体の関係する部位には interface の記述はまったく出てこない。

golang/basic/interface/start.txt · 最終更新: 2021-07-20 18:48 by ore