我在这里有这个小服务器。目的是,如果我访问localhost:8000 / *,它应该增加counter1,如果我访问localhost:8000 / count,它应该告诉我当前的数量counter。
counter
一个奇怪的事情发生的是,好像我每次访问localhost:8000时,计数器上升由3所以我会去localhost:8000/count和counter将在3,然后我访问localhost:8000,然后localhost:8000/count再次,counter现在是在6.为什么会发生吗?有什么奇怪的东西net/http吗?
localhost:8000
localhost:8000/count
net/http
另外,为什么刷新时localhost:8000/count,计数会按1递增1?该counterFUNC不增加count,但count仍上升- 这是为什么?是否也handler添加到localhost:8000/count路线中?
count
handler
package main import ( "fmt" "log" "net/http" "sync" ) var mu sync.Mutex var count int func main() { http.HandleFunc("/", handler) http.HandleFunc("/count", counter) log.Fatal(http.ListenAndServe("localhost:8000", nil)) } // handler echoes the Path component of the requested URL. func handler(w http.ResponseWriter, r *http.Request) { mu.Lock() count++ mu.Unlock() fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path) } // counter echoes the number of calls so far. func counter(w http.ResponseWriter, r *http.Request) { mu.Lock() fmt.Fprintf(w, "Count %d\n", count) mu.Unlock() }
额外的请求是您的浏览器试图访问/favicon.ico
例如,如果您在处理程序函数中将http.Request打印到stdout,则可以看到此信息。