【发布时间】:2021-06-20 23:47:25
【问题描述】:
我无法理解ResponseWriter 语法的一部分。
type ResponseWriter interface {
Header() Header
Write([]byte) (int, error)
WriteHeader(statusCode int)
}
例如,在go by example 中提供的示例中,area 方法由两个实现geometry 接口的对象实现。
http.ResponseWriter 是一个接口,它可以支持Write 等等。
我写了以下代码来测试w ResponseWriter的值
func sendData(w http.ResponseWriter, r *http.Request) {
fmt.Println(w)
}
func main() {
http.HandleFunc("/", sendData)
http.ListenAndServe(":8081", nil)
}
浏览器返回结果为空白
在执行代码的终端,我得到了如下stdout:
&{0xc00009ebe0 0xc0000e8100 {} 0x112a550 false false false false 0xc00006c500 {0xc0000d40e0 map[] false false} map[] false 0 -1 0 false false [] 0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0] [0 0 0] 0xc0000200e0 0}
作为一个接口,它依赖于底层类型来进行实际的写入,但底层类型是什么,写入在哪里实现?
【问题讨论】:
-
两个非常好的提示:1) 重做所有语言基础知识的 Go 之旅。 2) 总是,我的意思是总是阅读你使用的所有函数和包的文档,这里是 fmt.Println。除非您可能习惯于 Go 文档的文档很短,否则很有帮助。
标签: go