gpt4 book ai didi

戈朗 : How do you use a pointer on a struct that hasn't been initialized yet

转载 作者:数据小太阳 更新时间:2023-10-29 03:40:10 26 4
gpt4 key购买 nike

所以我在看 file here .

他们调用 record := &accessLog 但他们从来没有首先将其初始化为变量,如果他们这样做,如果有多个同时连接,记录是否有可能被覆盖用别人的数据?

type accessLog struct {
ip, method, uri, protocol, host string
elapsedTime time.Duration
}

func LogAccess(w http.ResponseWriter, req *http.Request, duration time.Duration) {
clientIP := req.RemoteAddr

if colon := strings.LastIndex(clientIP, ":"); colon != -1 {
clientIP = clientIP[:colon]
}

record := &accessLog{
ip: clientIP,
method: req.Method,
uri: req.RequestURI,
protocol: req.Proto,
host: req.Host,
elapsedTime: duration,
}

writeAccessLog(record)
}

最佳答案

Go 是一个 garbage collected语。只要有对它的引用,指针指向的结构就会有效。多个连接与此无关,因为这会在每次调用 LogAccess 时创建一个新的 record,如果您按照相关代码进行操作,您会看到引用至少存在于 writeAccessLog 的末尾,可能更长,具体取决于 glog.Infoln 的实现。

为了清楚起见,&someType { ... fields ...} 创建了一个新的(未命名的)someType 实例,然后返回该实例的地址。

关于戈朗 : How do you use a pointer on a struct that hasn't been initialized yet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30427413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com