Home > Article > Backend Development > How to Convert a Function into an Interface Implementation?
Introduction
Interfaces in programming define a set of methods that a type must implement to be considered a valid interface implementation. When a function implements an interface, its method signature must match the interface's method signature.
Interface and Implementation
In this case, we have the following interface:
type Handler interface { ServeHTTP(*Conn, *Request) }
This interface defines a method called ServeHTTP, which takes a Conn and a Request as arguments.
The following implementation of the Counter type satisfies the Handler interface:
type Counter int func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) { fmt.Fprintf(c, "counter = %d\n", ctr); ctr++; }
Converting a Function to Implement the Interface
Sometimes, we may have a function that matches the interface method signature but is not directly implemented as a method. In such cases, the following technique can be used to convert the function into an interface implementation:
// 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);
In this example, the notFound function is not a method, but it matches the ServeHTTP method's signature. To make it compatible with the Handler interface, we create a HandlerFunc type that wraps the function in a method. Then, we create an instance of HandlerFunc with notFound as its value. This instance, Handle404, now implements the Handler interface and can be used as a valid implementation.
Summary
This technique demonstrates how functions that satisfy an interface's method signature can be converted into interface implementations, even if they are not methods of a custom type. This approach is particularly useful when working with existing functions that need to be adopted to interface-based systems.
The above is the detailed content of How to Convert a Function into an Interface Implementation?. For more information, please follow other related articles on the PHP Chinese website!