インターフェイスを実装する関数
質問:
インターフェイス内で関数と型はどのように相互作用しますか?
答え:
インターフェイスは、型の実装に必要なメソッドを定義します。以下に例を示します。
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 サイトの他の関連記事を参照してください。