下記は、『Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る』のP69に記載されているソースコードです。
go
1package main 2 3import ( 4 "fmt" 5 "net/http" 6) 7 8type MyHandler struct{} 9 10func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 11 fmt.Fprintf(w, "Hello World!") 12} 13 14func main() { 15 handler := MyHandler{} 16 server := http.Server{ 17 Addr: "127.0.0.1:8080", 18 Handler: &handler, 19 } 20 server.ListenAndServe() 21}
■質問内容
1.ブラウザでアクセスした場合の出力が、「"Hello World!"」であるが、ServeHTTPメソッドの実行が記載されていないにも関わらず、そのような結果になるのは何故か。
2.ListenAndServe関数に関して
参照ページ(https://github.com/golang/go/blob/master/src/net/http/server.go#L3181-L3185)によると、下記のように定義されている。return server.ListenAndServe()のように引数を記載してなくてもエラーにならない理由は何故か。
go
1func ListenAndServe(addr string, handler Handler) error { 2 server := &Server{Addr: addr, Handler: handler} 3 return server.ListenAndServe() 4}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/31 08:49 編集
2022/03/31 09:00