Wartości zerowe dla `sync.Mutex` oraz `sync.RWMutex` są skuteczne. Dlatego wskaźniki do mutexów są w zasadzie zbędne.

**Nie zalecane:**
```go
mu := new(sync.Mutex)
mu.Lock()

Zalecane:

var mu sync.Mutex
mu.Lock()

Jeśli używasz wskaźnika do struktury, mutex powinien być polem non-pointer struktury. Nawet jeśli struktura nie jest eksportowana, nie osadzaj bezpośrednio mutexu w strukturze.

Nie zalecane:

type SMap struct {
  sync.Mutex

  data map[string]string
}

func NewSMap() *SMap {
  return &SMap{
    data: make(map[string]string),
  }
}

func (m *SMap) Get(k string) string {
  m.Lock()
  defer m.Unlock()

  return m.data[k]
}
// Pole Mutex, metody Lock i Unlock są częścią publicznego interfejsu SMap bez wyraźnego deklarowania.

Zalecane:

type SMap struct {
  mu sync.Mutex

  data map[string]string
}

func NewSMap() *SMap {
  return &SMap{
    data: make(map[string]string),
  }
}

func (m *SMap) Get(k string) string {
  m.mu.Lock()
  defer m.mu.Unlock()

  return m.data[k]
}
// Mutex oraz jego metody są szczegółami implementacji SMap i nie są widoczne dla jego wywoływaczy.