GoのnoCopyが構造体コピーを検出する仕組み

How Go detects struct copies with sync.noCopy

GoのnoCopyが構造体コピーを検出する仕組み

sync.Mutex、sync.Once、sync.Mapなどの構造体に含まれるnoCopyフィールドは、コンパイラに特別な意味を持たないが、go vetのcopylocksチェッカーがコピーを警告するためのマーカーとして機能する。noCopyがLock/Unlockメソッドを持つ理由、sync.MapがnoCopyを必要とする理由、そして自分でnoCopyを定義する方法を解説。さらに、コピーを無視した場合の具体的な問題(WaitGroupが終了しないなど)や、フィールド位置による構造体サイズへの影響も紹介する。

noCopyマーカーはGoコンパイラに特別なルールを追加するものではありません。

同じ日のその他の記事

2026-08-17