在serveHTTP处理程序中调用接口方法和struct方法有什么区别?

I'm moving from Java to go. In 'go', I got confused when using a Handler.

For eg: ServeHTTP(w http.ResponseWriter, req *http.Request)

Here ResponseWriter is an interface and Request is a struct. We are using w as an object to call the methods in ResponseWriter interface. The same goes with req object. I know that a struct can implement an interface. Here I'm showing an example and where I'm getting confused. Go Playground Link

There's no difference. The interface is the type of your variable/field/parameter; the value is still (most likely) a struct. This is the same as in Java, where you can specify that a method argument is of an interface type, but you must still pass in a concretion. Calling methods on the interface-typed argument is the same as calling the method on a concrete type.