以下代码来自Todd Mcleod的Golang web-dev课程。我无法理解 - 甚至一遍又一遍地观看他的视频并搜索关于方法的所有内容 - 如下:方法ServeHTTP附加到类型热狗,但从未运行过。仍然是方法中的代码(在这种情况下是执行Fprintln(...)。(当你运行这段代码并转到localhost:8080时,它会播放“你想要的这个函数中的任何代码”。)可以有谁解释我为什么会这样?
非常感谢!
package main
import (
"fmt"
"net/http"
)
type hotdog int
func (m hotdog) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Any code you want in this func")
}
func main() {
var d hotdog
http.ListenAndServe(":8080", d)
}
答案 0 :(得分:5)
它运行。 ListenAndServe
会针对您的服务器发出的每个请求调用它。
答案 1 :(得分:1)
由于您通过hotdog
实现ServeHTTP
作为处理程序,因此收到的每个请求都将发送到热狗的ServeHTTP
。
答案 2 :(得分:1)
使用类型热狗时运行此功能
func (m hotdog) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Any code you want in this func")
}
在主要的你用类型hotdog创建变量d,
然后在ListenAndServe中,你告诉你的代码每次有人连接到你的服务器时使用变量d,并且因为d是热狗类型,你每次有人连接时都会运行第一个函数
func main() {
var d hotdog
http.ListenAndServe(":8080", d)
}