2017-01-29 3 views
0

私は、Webリクエストハンドラと同じ機能を持つパッケージを用意しています。Golangでいくつかの機能を持つパッケージを制限できますか?

私は各パッケージ内のホーム・ページのために、このような機能を持っている:より良いコードを構造化するために

package home_page_handler 


func GetUrl() string { 
    return "/" 
} 

func GetPageName() string { 
    return "HomePage" 
} 

を、私は制限を加えることができる場合、私は疑問に思う、いくつかの「クラスの各パッケージを作るためのインタフェースを介してもよいです"これらの機能を含んでいますか?

そのようにすれば、もう1つハンドラを追加すると、関数が見つからないか、不正なシグネチャがある場合にコンパイル中にエラーがスローされます。

+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) 
} 

で各パッケージの「登録」ができました。

関連する問題