Handle 함수에는 인자로 Handler 가 필요하다.
Handler 는 ServeHTTP를 가지고 있는 interface이다.
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
Handler란 interface를 정의한것이고 ServeHTTP 함수를 정의해야 Handler interface가 된다.
ServeHTTP 메서드를 가진 타입으로 변환이 가능하다면 사용자 정의 함수를 Handle의 두 번째 인자로 넣어 줄 수 있다.
type HandlerFunc func(ResponseWriter, *Request)
실제로 HandleFunc 함수 내부에는 HandlerFunc타입을 직접 호출하여 사용자 정의 함수handler를 전달한다.
func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
mux.Handle(pattern, HandlerFunc(handler))
}
두번째 인자로 func(http.ResponseWriter, *http.Request) 형태로 이루어져 있는 함수를 받는다.