golang では、「type インターフェース 型名 インターフェース{メソッド名 1 (パラメータリスト 1) 戻り値リスト 1 メソッド名 2 (パラメータリスト 2) 戻り値リスト 2...}」という文が使えます。インターフェイスを宣言する ; 「メソッド名」の最初の文字が大文字で、「インターフェイス型名」の最初の文字も大文字の場合、インターフェイスが配置されているパッケージの外部のコードからこのメソッドにアクセスできます。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
Go 言語は「伝統的な」オブジェクト指向プログラミング言語ではありません。クラスや継承の概念がありません。
しかし、Go 言語には非常に柔軟なインターフェイス概念があり、それを通じて多くのオブジェクト指向機能を実現できます。多くのオブジェクト指向言語には同様のインターフェイス概念がありますが、Go 言語のインターフェイス型のユニークな点は、暗黙的な実装を満たすことです。つまり、特定の具象型に対して満足のいくインターフェイス型をすべて定義する必要はなく、必要なメソッドがあれば十分です。
この設計により、これらの型の定義を変更することなく、既存の具象型を満たす新しいインターフェイス型を作成できます。これは、使用する型が私たちの制御下にないパッケージからのものである場合に当てはまります。特に役に立ちます。
インターフェイス タイプは、他のタイプの動作を抽象化および一般化したものです。インターフェイス タイプは特定の実装の詳細に束縛されないため、この抽象メソッドを通じて、関数をより柔軟で機能的な適応性を高めることができます。
インターフェイスは、両当事者によって合意された協力協定です。インターフェイスの実装者はインターフェイスがどのように使用されるかを気にする必要はなく、呼び出し側もインターフェイスの実装の詳細を気にする必要はありません。インターフェイスは、含まれるデータの形式、型、構造を公開しない型および抽象構造です。
インターフェイス宣言の形式
各インターフェイス タイプは、いくつかのメソッドで構成されます。インターフェイスの正式なコードは次のとおりです。
type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列表1 方法名2( 参数列表2 ) 返回值列表2 … }
各部の説明:
インターフェイスの型名: type を使用してインターフェイスをカスタム型名として定義します。 Go 言語のインターフェイスに名前を付ける場合、書き込み操作を伴うインターフェイスは Writer、文字列関数を含むインターフェイスは Stringer、閉じる関数を含むインターフェイスは Closer など、通常は単語の後に er が付けられます。
メソッド名: メソッド名の最初の文字が大文字で、インターフェイス型名の最初の文字も大文字の場合、このメソッドはパッケージ外のコードで使用できます。インターフェイスが見つかりました。アクセスします。
パラメータ リスト、戻り値リスト: パラメータ リストおよび戻り値リスト内のパラメータ変数名は無視できます。例:
type writer interface{ Write([]byte) error }
開発における一般的なインターフェイスと記述方法
Go 言語で提供される多くのパッケージには、io パッケージで提供される Writer インターフェイスなどのインターフェイスがあります。
このインターフェイスは Write() メソッドを呼び出してバイト配列 ([]byte) を書き込むことができ、戻り値は書き込まれたバイト数 (n int) と考えられるエラー (err error) を示します。 同様に、オブジェクトを文字列で表示するインターフェースがあり、このインターフェースの型が実装されていれば、String()メソッドを呼び出すと、オブジェクトに対応する文字列を表示することができます。得られる。 fmt パッケージでは次のように定義されています。type Writer interface { Write(p []byte) (n int, err error) }Stringer インターフェイスは Go 言語で非常に頻繁に使用され、その機能は Java または C# 言語の ToString 操作に似ています。 Go 言語の各インターフェイスのメソッドの数はそれほど多くありません。 Go 言語は、インターフェイスを通じて自身の機能を正確に記述し、複数のインターフェイスの埋め込みや組み合わせによって単純なインターフェイスを複雑なインターフェイスに拡張することを望んでいます。この章の後のセクションでは、合成を使用してインターフェイスを拡張する方法について説明します。 【関連する推奨事項:
以上がgolangインターフェースの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。