首先,我仍然不清楚如何构建这个问题,但我无法理解,有人可以帮助我理解这个问题。如果我重命名“serveHTTP”或没有该方法,为什么下面的代码会出错。
prog.go:17: cannot use &status (type *statusHandler) as type http.Handler in argument to httptest.NewServer:
*statusHandler does not implement http.Handler (missing ServeHTTP method)
[process exited with non-zero status]
以下代码
type statusHandler int
func (s *statusHandler) aServeHTTP(w http.ResponseWriter, r *http.Request) {
log.Println(" inside status handler serve http")
}
func main() {
status := statusHandler(400)
s := httptest.NewServer(&status)
log.Println("value of s is %d", s)
defer s.Close()
}
答案 0 :(得分:2)
ServeHTTP
需要满足http.Handler
界面。
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
Go中的接口提供了一种指定对象行为的方法:如果有什么可以做到这一点,那么可以在这里使用它。
有关详细信息,请参阅Interfaces and Types in Effective Go。