一个类型如何间接引用其他函数基本方法?

时间:2015-01-16 00:48:21

标签: function types interface go

首先,我仍然不清楚如何构建这个问题,但我无法理解,有人可以帮助我理解这个问题。如果我重命名“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()
}

http://play.golang.org/p/QZIrWALAm_

1 个答案:

答案 0 :(得分:2)

ServeHTTP需要满足http.Handler界面。

type Handler interface {
        ServeHTTP(ResponseWriter, *Request)
}
  

Go中的接口提供了一种指定对象行为的方法:如果有什么可以做到这一点,那么可以在这里使用它。

有关详细信息,请参阅Interfaces and Types in Effective Go