잘못하여 값으로 전달된 lock을 보고합니다.

실수로 lock을 포함하는 값을 복사할 경우 원래 값 및 복사된 값 모두가 잘못 동작할 수 있습니다. 일반적으로 이러한 값은 포인터를 통해서 참조되어야 합니다. 여기서 lock은 sync.Mutex또는 sync.WaitGroup과 같은 sync.Locker를 구현하는 타입을 의미합니다.

예:

type SafeInt struct {
  m sync.Mutex
  i int
}

func (s SafeInt) Inc() { // mutex가 복사됨
  s.m.Lock()
  s.i++
  s.m.Unlock()
}

빠른 수정으로 포인터 추가를 적용한 후:

type SafeInt struct {
  m sync.Mutex
  i int
}

func (s *SafeInt) Inc() {
  s.m.Lock()
  s.i++
  s.m.Unlock()
}