ホームページ バックエンド開発 Golang golangインターフェースの実装方法

golangインターフェースの実装方法

Dec 23, 2022 am 10:54 AM
golang 言語を移動 ポインタ

golang では、「type インターフェース 型名 インターフェース{メソッド名 1 (パラメータリスト 1) 戻り値リスト 1 メソッド名 2 (パラメータリスト 2) 戻り値リスト 2...}」という文が使えます。インターフェイスを宣言する ; 「メソッド名」の最初の文字が大文字で、「インターフェイス型名」の最初の文字も大文字の場合、インターフェイスが配置されているパッケージの外部のコードからこのメソッドにアクセスできます。

golangインターフェースの実装方法

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Go 言語は「伝統的な」オブジェクト指向プログラミング言語ではありません。クラスや継承の概念がありません。

しかし、Go 言語には非常に柔軟なインターフェイス概念があり、それを通じて多くのオブジェクト指向機能を実現できます。多くのオブジェクト指向言語には同様のインターフェイス概念がありますが、Go 言語のインターフェイス型のユニークな点は、暗黙的な実装を満たすことです。つまり、特定の具象型に対して満足のいくインターフェイス型をすべて定義する必要はなく、必要なメソッドがあれば十分です。

この設計により、これらの型の定義を変更することなく、既存の具象型を満たす新しいインターフェイス型を作成できます。これは、使用する型が私たちの制御下にないパッケージからのものである場合に当てはまります。特に役に立ちます。

インターフェイス タイプは、他のタイプの動作を抽象化および一般化したものです。インターフェイス タイプは特定の実装の詳細に束縛されないため、この抽象メソッドを通じて、関数をより柔軟で機能的な適応性を高めることができます。

インターフェイスは、両当事者によって合意された協力協定です。インターフェイスの実装者はインターフェイスがどのように使用されるかを気にする必要はなく、呼び出し側もインターフェイスの実装の詳細を気にする必要はありません。インターフェイスは、含まれるデータの形式、型、構造を公開しない型および抽象構造です。

インターフェイス宣言の形式

各インターフェイス タイプは、いくつかのメソッドで構成されます。インターフェイスの正式なコードは次のとおりです。

1

2

3

4

5

type 接口类型名 interface{

    方法名1( 参数列表1 ) 返回值列表1

    方法名2( 参数列表2 ) 返回值列表2

    

}

ログイン後にコピー

各部の説明:

  • インターフェイスの型名: type を使用してインターフェイスをカスタム型名として定義します。 Go 言語のインターフェイスに名前を付ける場合、書き込み操作を伴うインターフェイスは Writer、文字列関数を含むインターフェイスは Stringer、閉じる関数を含むインターフェイスは Closer など、通常は単語の後に er が付けられます。

  • メソッド名: メソッド名の最初の文字が大文字で、インターフェイス型名の最初の文字も大文字の場合、このメソッドはパッケージ外のコードで使用できます。インターフェイスが見つかりました。アクセスします。

  • パラメータ リスト、戻り値リスト: パラメータ リストおよび戻り値リスト内のパラメータ変数名は無視できます。例:

1

2

3

type writer interface{

    Write([]byte) error

}

ログイン後にコピー

開発における一般的なインターフェイスと記述方法

Go 言語で提供される多くのパッケージには、io パッケージで提供される Writer インターフェイスなどのインターフェイスがあります。

このインターフェイスは Write() メソッドを呼び出してバイト配列 ([]byte) を書き込むことができ、戻り値は書き込まれたバイト数 (n int) と考えられるエラー (err error) を示します。

同様に、オブジェクトを文字列で表示するインターフェースがあり、このインターフェースの型が実装されていれば、String()メソッドを呼び出すと、オブジェクトに対応する文字列を表示することができます。得られる。 fmt パッケージでは次のように定義されています。

1

2

3

type Writer interface {

    Write(p []byte) (n int, err error)

}

ログイン後にコピー
Stringer インターフェイスは Go 言語で非常に頻繁に使用され、その機能は Java または C# 言語の ToString 操作に似ています。

Go 言語の各インターフェイスのメソッドの数はそれほど多くありません。 Go 言語は、インターフェイスを通じて自身の機能を正確に記述し、複数のインターフェイスの埋め込みや組み合わせによって単純なインターフェイスを複雑なインターフェイスに拡張することを望んでいます。この章の後のセクションでは、合成を使用してインターフェイスを拡張する方法について説明します。

【関連する推奨事項:

Go ビデオ チュートリアル プログラミング教育

以上がgolangインターフェースの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Golandのカスタム構造ラベルが有効になっていないという問題を解決する方法は? Golandのカスタム構造ラベルが有効になっていないという問題を解決する方法は? Apr 02, 2025 pm 12:51 PM

GoLandを使用する場合のGolandのカスタム構造タグの問題に関して、Go Language Developmentに使用する場合、いくつかの構成の問題に遭遇することがよくあります。それらの1つは...

Golang Generic Function Typeの制約がVSCodeで自動的に削除されるという問題を解決する方法は? Golang Generic Function Typeの制約がVSCodeで自動的に削除されるという問題を解決する方法は? Apr 02, 2025 pm 02:15 PM

VSCODEユーザーのGolang Generic Function Typeの制約の自動削除は、VSCODEを使用してGolangコードを書くときに奇妙な問題に遭遇する可能性があります。いつ...

マルチプロセスログを作成するときに、同時性が安全で効率的であることを確認する方法は? マルチプロセスログを作成するときに、同時性が安全で効率的であることを確認する方法は? Apr 02, 2025 pm 03:51 PM

マルチプロセスのログライティングの並行性セキュリティの問題を効率的に処理します。複数のプロセスが同じログファイルを同時に書き込みます。並行性が安全で効率的であることを確認する方法は?これは...

GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? Apr 02, 2025 pm 04:12 PM

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Apr 02, 2025 pm 02:03 PM

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

Golangを使用してキャディーのような背景の実行、停止、リロード機能を実装する方法は? Golangを使用してキャディーのような背景の実行、停止、リロード機能を実装する方法は? Apr 02, 2025 pm 02:12 PM

Golangで機能をバックグラウンドランニング、停止、リロードする方法は?プログラミングプロセス中に、バックグラウンド操作を実装して停止する必要があることがよくあります...

See all articles