소개
프로그래밍의 인터페이스는 유형이 반드시 수행해야 하는 메소드 세트를 정의합니다. 구현은 유효한 인터페이스 구현으로 간주됩니다. 함수가 인터페이스를 구현할 때 해당 메서드 서명은 인터페이스의 메서드 서명과 일치해야 합니다.
인터페이스 및 구현
이 경우 다음과 같은 인터페이스가 있습니다.
type Handler interface { ServeHTTP(*Conn, *Request) }
이 인터페이스는 Conn 및 Request를 인수로 사용하는 ServeHTTP라는 메서드를 정의합니다.
다음 Counter 유형 구현은 Handler 인터페이스를 충족합니다.
type Counter int func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) { fmt.Fprintf(c, "counter = %d\n", ctr); ctr++; }
함수를 변환하여 인터페이스 구현
때로는 인터페이스 메소드 시그니처와 일치하지만 직접 메소드로 구현되지 않는 함수가 있을 수 있습니다. 이러한 경우 다음 기술을 사용하여 함수를 인터페이스 구현으로 변환할 수 있습니다.
// Now we define a type to implement ServeHTTP: type HandlerFunc func(*Conn, *Request) func (f HandlerFunc) ServeHTTP(c *Conn, req *Request) { f(c, req) // the receiver's a func; call it } // Convert function to attach method, implement the interface: var Handle404 = HandlerFunc(notFound);
이 예에서 notFound 함수는 메서드는 아니지만 ServeHTTP 메서드의 서명과 일치합니다. Handler 인터페이스와 호환되도록 하기 위해 메서드에서 함수를 래핑하는 HandlerFunc 유형을 만듭니다. 그런 다음 notFound를 값으로 사용하여 HandlerFunc의 인스턴스를 만듭니다. 이 인스턴스인 Handle404는 이제 Handler 인터페이스를 구현하고 유효한 구현으로 사용할 수 있습니다.
요약
이 기술은 인터페이스의 메서드 서명을 충족하는 함수가 어떻게 가능한지 보여줍니다. 사용자 정의 유형의 메소드가 아니더라도 인터페이스 구현으로 변환됩니다. 이 접근 방식은 인터페이스 기반 시스템에 채택해야 하는 기존 기능을 사용할 때 특히 유용합니다.
위 내용은 함수를 인터페이스 구현으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!