Goでは、インターフェイスはメソッドシグネチャのセットを定義するタイプです。タイプが実装する必要がある方法を指定しますが、実装は提供されません。 GOのインターフェイスは暗黙的に満足しています。つまり、そのインターフェイスによって定義されたすべてのメソッドを実装する場合、タイプはインターフェイスを自動的に満たします。この概念は、同じインターフェイスを実装すると、さまざまなタイプを均一に扱うことができるため、GOの多型の中心です。
インターフェイスは、実装する任意のタイプが特定のメソッドを利用できることを保証する契約と見なすことができます。これにより、インターフェイスは非常に用途が広く、柔軟で保守可能なコードを作成するために強力になります。さらに、空のインターフェイスとも呼ばれるinterface{}
タイプは、メソッドを指定しないインターフェイスであり、すべてのタイプを実装して、不明なタイプの値を処理するのに役立ちます。
GOにインターフェイスを実装するには、タイプを定義し、タイプがインターフェイスで指定されたすべてのメソッドの実装を提供することを保証します。以下は、インターフェイスの実装方法に関する段階的なプロセスです。
インターフェイスを定義します。最初に、インターフェイスを定義する必要があります。たとえば、メソッドArea()
を持つShape
というインターフェイスを定義しましょう。
<code class="go">type Shape interface { Area() float64 }</code>
タイプを定義します。インターフェイスを実装するタイプを作成します。たとえば、タイプRectangle
を作成しましょう。
<code class="go">type Rectangle struct { width, height float64 }</code>
インターフェイスメソッドを実装する: Rectangle
タイプの場合、 Shape
インターフェイスを実装するには、 Area()
メソッドを定義する必要があります。
<code class="go">func (r Rectangle) Area() float64 { return r.width * r.height }</code>
これらの手順に従うことにより、 Rectangle
タイプは、 Shape
インターフェイスで定義されているすべてのメソッドシグネチャを満たすため、 Shape
インターフェイスを自動的に実装します。
GOプログラミングでインターフェイスを使用すると、いくつかの重要な利点があります。
GOのインターフェイスは、さまざまなシナリオで広く使用されています。一般的なユースケースには次のものが含まれます。
io.Reader
およびio.Writer
インターフェイスは、入力操作と出力操作を処理するためのGOの基本です。標準ライブラリの多くの機能は、これらのインターフェイスで動作するように設計されており、コンクリートタイプを知らずにさまざまなソース(ファイル、ネットワーク接続など)から読み取りまたは書き込みできるようになります。net/http
パッケージでは、 http.Handler
インターフェイスを使用してHTTPハンドラーを定義します。これにより、 ServeHTTP
メソッドを実装するカスタムハンドラーを作成できます。これは、HTTPサーバーで使用できます。インターフェイスを活用することにより、GO開発者は、堅牢なソフトウェアシステムを構築するために不可欠な、よりモジュール式、柔軟性、保守可能なコードを作成できます。
以上がGOのインターフェイスとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。