私はこれらの2つのタイプを持っています:
type Routing map[string]Handler
type Handler interface {
Handle()
}
インターフェイスを満たす型が呼び出されMyHandler
、次のようになります。
type MyHandler struct {
}
func (this *MyHandler) Handle() {
// ...
}
私はこのようなことをしたいと思います:
// routes is created at the beginning of the program and available
// throughout the lifetime of the script
routes := Routing {
"/route/here": MyHandler,
})
// ...
// and in another method, this line may be executed several times:
new(routes["/route/here"]).Handle()
最後の行で次のエラーが表示されます。
routes["/route/here"] はタイプではありません
その最後の行を次のように変更すると
routes["/route/here"].Handle()
それは明らかに機能します。ただし、それは Handler のインスタンスを 1 つだけ永久に使用します...そして、最後の行が実行されるたびに新しいインスタンスが必要です。Handler
最後の行が実行されるたびに新しいインスタンスをインスタンス化するにはどうすればよいですか?
( を使用する場合、古いものは使用後にガベージ コレクションされると想定してnew
います。作成したインスタンスを保存していないことに注意してください。Handle()
メソッドを呼び出して破棄するだけです。)