Golang использования sync.Mutex

Нужно ли использовать sync.Mutex в данном usecase?

package main

import (
    "net/http"
    "sync"
)

type Rest struct {
    client       *http.Client
    clientMutext sync.Mutex
}

func (rr *Rest) installHttpHandler() {
    handler := func(w http.ResponseWriter, r *http.Request) {
        rr.clientMutext.Lock()
        defer rr.clientMutext.Unlock()
        rr.client.Do() //работа с http.Client
    }
    http.HandleFunc("/", handler)
}

func main() {
    r := Rest{
        client: &http.Client{},
    }
    r.installHttpHandler()
    http.ListenAndServe(":8080", nil)
}


Смущает то что rr.client (*http.Client) является глобальным для Rest.
Или можно безопасно получать доступ к rr.client не используя sync.Mutex?

представленный код написан чтобы продемонстрировать проблему ответ на который я хочу получить.


Ответы (1 шт):

Автор решения: Ainar-G

Читайте внимательно документацию:

(…)

The Client's Transport typically has internal state (cached TCP connections), so Clients should be reused instead of created as needed. Clients are safe for concurrent use by multiple goroutines.

(…)

→ Ссылка