type HandlerFunc func(ResponseWriter, *Request)は型なんだけどServeHTTPを呼べるのが僕にはわかってないのがわかってきた気のする :gopher:
https://pkg.go.dev/net/http#HandlerFunc
https://go.dev/doc/effective_go#interface_methods
あー、そうか。HandlerFuncはインターフェース型だからそのオブジェクトをレシーバにしたメソッドを定義できるんだ。
https://cs.opensource.google/go/go/+/refs/tags/go1.21.4:src/net/http/server.go;l=2135
んで、関数/メソッドもレシーバになれる。うーん。
待って違う。HandlerインターフェースがServeHTTP関数を要求して
https://cs.opensource.google/go/go/+/refs/tags/go1.21.4:src/net/http/server.go;l=86
いて、HandlerFunc型/インターフェースにはServeHTTP関数を定義してある
https://cs.opensource.google/go/go/+/refs/tags/go1.21.4:src/net/http/server.go;l=2132
からHandlerインターフェースを満たす。んで、HandlerFuncに定義してあるServeHTTP関数は自分をレシーバとして呼ばれるメソッドなんだ。うむわからん。