While chaining handlers, the function has a return type of Handler, but it actually returns a HandlerFunc. This does not throw any error.
How is HandlerFunc accepted in place of a Handler, the prior being a function type and the latter being a interface type?
func log(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
...
})
}