現在、オライリージャパンで勉強をしているのですが、下記のコードで1つわからないことがあります。
package main import ( "log" "net/http" "path/filepath" "sync" "text/template" ) type templateHandler struct { once sync.Once filename string templ *template.Template } func (t *templateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { t.once.Do(func() { t.templ = template.Must(template.ParseFiles(filepath.Join("template", t.filename))) }) t.templ.Execute(w, nil) } func main() { http.Handle("/", &templateHandler{filename: "chat.html"}) if err := http.ListenAndServe(":8081", nil); err != nil { log.Fatal(err) } }
main関数の中のhttp.HandleにおいてHandle関数は(string型、Hander型)だと、ドキュメントを読んで理解しているのですが、このコードだと、*templateHandler型でも正常に動きます。監訳注に"*templateHander型はhttp.Hander型に適合しています"と記載されていたのですが、どうゆうことなのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。