2017-01-29 3 views
0

웹 요청 처리기와 기능적으로 비슷한 패키지가 있습니다.Golang에서 몇 가지 기능을 가진 패키지를 제한 할 수 있습니까?

나는 각 패키지의 홈 페이지에 대해이 같은 기능을 가지고 :

package home_page_handler 


func GetUrl() string { 
    return "/" 
} 

func GetPageName() string { 
    return "HomePage" 
} 

더 나은 코드를 구성하기 위해, 나는 제한을 추가 할 수 있습니다 궁금, 인터페이스를 통해 사용될 수 있습니다 "클래스의 각 패키지를 만들기 위해 "이 기능들을 포함하고 있습니까?

그런 식으로 하나 이상의 처리기를 추가하면 함수가 없거나 잘못된 서명이 있으면 컴파일하는 동안 오류가 발생합니다.

+0

함수가 누락되어 호출하려고하면 컴파일러에서 문제를 제기합니다. 함수가 누락 되어도 아무도 호출하지 않으면 왜 귀찮을까요? – dolmen

답변

1

당신은 "등록"할 수 GetUrlGetPageName가 제공 함수 서명이 정확하지 않는 패키지는 컴파일되지 않습니다 전화

package server 

type PageHandler { 
    url, name func() string 
} 

var Handlers = []PageHandler 

func RegisterHandler(url func()string, name func()string) { 
    Handlers = append(Handlers, PageHandler{url, name}) 
} 

... 

package home_page 

... 

func init() { 
    server.RegisterHandler(GetUrl, GetPageName) 
} 

각 패키지로 제공된다.

관련 문제