ホームページ > バックエンド開発 > Golang > インターフェイスの要件を満たすために関数と型をどのように使用できるでしょうか?

インターフェイスの要件を満たすために関数と型をどのように使用できるでしょうか?

Mary-Kate Olsen
リリース: 2024-11-06 14:39:02
オリジナル
812 人が閲覧しました

How can functions and types be used to fulfill the requirements of an interface?

インターフェイスを実装する関数

質問:

インターフェイス内で関数と型はどのように相互作用しますか?

答え:

インターフェイスは、型の実装に必要なメソッドを定義します。以下に例を示します。

type Handler interface {
    ServeHTTP(*Conn, *Request)
}
ログイン後にコピー

例 1: インターフェイスを実装するカスタム タイプ

type Counter int

func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) {
    fmt.Fprintf(c, "counter = %d\n", ctr)
    ctr++
}
ログイン後にコピー

Counter タイプは、Handler インターフェイスを満たす ServeHTTP メソッドを実装します。

例 2: HandlerFunc の利用 (レシーバーとしての関数)

type HandlerFunc func(*Conn, *Request)

func (f HandlerFunc) ServeHTTP(c *Conn, req *Request) {
    f(c, req)
}

var Handle404 = HandlerFunc(notFound)
ログイン後にコピー

ここで、HandlerFunc は Conn と Request を受け取り、何も返さない関数です。これにより、HandlerFunc を通じて ServeHTTP メソッドを追加することで、notFound などの関数をハンドラーとして使用できるようになります。この間接的な方法により、インターフェイスを柔軟に実装できます。

以上がインターフェイスの要件を満たすために関数と型をどのように使用できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート