包内全局的Request和Response的问题

2. 问题描述?

并发请求的时候,session包内的全局RequestResponse的内容会被覆盖的吗?
如果覆盖了,那么会话不就乱了么。
我用 Edge 和 FF 浏览器测试了一下:

package main

import (
    "fmt"
    "net/http"
    "time"
)

// Request 用以获取会话
var Request *http.Request

// Response 用以写入会话
var Response http.ResponseWriter

var Name string

func main() {
    http.HandleFunc("/", handlerFunc)
    http.ListenAndServe(":3000", nil)
}

func handlerFunc(w http.ResponseWriter, r *http.Request) {
    Request = r
    Response = w
    for {
        time.Sleep(3 * time.Second)
        fmt.Println("============", Request.Header.Get("User-Agent"))
    }
}

3. 您期望得到的结果?

如果不影响的话,输出的UserAgent应该是类似轮流出现的。

4. 您实际得到的结果?

实际的结果却是,产生了互相的覆盖问题,第二个请求覆盖了第一个的Request:

Go

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!