더북(TheBook)

라우터에 핸들러를 등록하기 위한 메서드 정의

이제 라우터에 핸들러를 등록하기 위한 메서드인 HandleFunc를 만들어 보자.

▼ router.go

func (r *router) HandleFunc(method, pattern string, h http.HandlerFunc) {
    // http 메서드로 등록된 맵이 있는지 확인
    m, ok := r.handlers[method]
    if !ok {
        // 등록된 맵이 없으면 새 맵을 생성
        m = make(map[string]http.HandlerFunc)
        r.handlers[method] = m
    }
    // http 메서드로 등록된 맵에 URL 패턴과 핸들러 함수 등록
    m[pattern] = h
}

routerHandleFunc 메서드 내부에서는 매개변수로 전달된 http 메서드, URL 패턴, 핸들러 함수를 2차원 맵인 handlers 필드에 등록한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.