一尘不染

运行一个简单的服务器,但计数器似乎增加了3,为什么呢?

go

我在这里有这个小服务器。目的是,如果我访问localhost:8000 / *,它应该增加counter1,如果我访问localhost:8000 /
count,它应该告诉我当前的数量counter

一个奇怪的事情发生的是,好像我每次访问localhost:8000时,计数器上升由3所以我会去localhost:8000/countcounter将在3,然后我访问localhost:8000,然后localhost:8000/count再次,counter现在是在6.为什么会发生吗?有什么奇怪的东西net/http吗?

另外,为什么刷新时localhost:8000/count,计数会按1递增1?该counterFUNC不增加count,但count仍上升-
这是为什么?是否也handler添加到localhost:8000/count路线中?

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()
}

阅读 210

收藏
2020-07-02

共1个答案

一尘不染

额外的请求是您的浏览器试图访问/favicon.ico

例如,如果您在处理程序函数中将http.Request打印到stdout,则可以看到此信息。

2020-07-02