如何解决分配副本将锁定值锁定到tr:net / http.Transport包含sync.Mutex

3 ssl mutex http go

当我运行go vet以下错误输出:

client.go:2345: assignment copies lock value to tr: net/http.Transport contains sync.Mutex
exit status 1
Run Code Online (Sandbox Code Playgroud)

client.go:2345:

var tr http.Transport

// Setup TLS
if clientConfig.TLSEnabled {
    tr = http.Transport{ // This is line 2345
        TLSClientConfig: &tls.Config{
            InsecureSkipVerify: true,
            MinVersion: tls.VersionTLS11,
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

如何解决此警告?它并没有停止我的构建;但是,这是警告,我也不想警告。

Jim*_*imB 6

您应该创建一个*http.Transport指针,而不是一个值

tr = &http.Transport{
Run Code Online (Sandbox Code Playgroud)

  • @Nilesh,有很多不合逻辑的有效陈述。不幸的是,您无法从文档中轻松看到互斥体字段,因此乍一看可能并不明显,但由于 Transport 类型具有所有指针接收器,应始终重用,并且对于并发访问是安全的,因此不太可能有人会选择非指针值。在这种罕见的情况下,“vet”警告会指出互斥体副本。 (3认同)