在學習net/http時,我實際上想知道如何將http.Response回傳給聽眾。從這個答案中,我發現http.Response型別被傳遞給ServeHTTP,但事實并非如此,因為在編譯時下面的代碼會出現錯誤。這意味著http.Response沒有實作http.ResponseWriter介面。我很好奇,什么是實作http.ResponseWriter介面的型別?
# command-line-arguments
./server1.go:9:20: http.Response.Header是一個域,不是一個方法
./server1.go:9:20: 不可能type 斷言。
http.Response沒有實作http.ResponseWriter(缺少Header方法)。
func handler( resp http.ResponseWriter, req *http.Request) {
actualresp := resp.(http.Response) //https://tour.golang.org/methods/15。
resp.Write([]byte("Hello Web, from go")
}
func main(){
http.HandleFunc("/api"/span>, handler)
http.ListenAndServe(":8000", nil)
}
uj5u.com熱心網友回復:
http.Response只具有以下方法:
func (r *Response) Cookies() []*Cookie>
func (r *Response) Location() ( *url. URL, error)
func (r *Response) ProtoAtLeast( major, minor int) bool
func (r *Response) Write(w io. Writer) error
這沒有實作http.ResponseWriter介面,它要求:
Header() Header
Write([]byte) (int, error)
WriteHeader(statusCode int)
所以很明顯,http.Response不能被用作http.ResponseWriter。
相反,而且正如你鏈接的答案所提到的那樣,使用了非出口的http.Response。你可以在http服務器端找到關于寫的生命的描述代碼中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/328686.html
標籤:
