タイトルの通りなのですが ある時、golangを書いていてvetコマンドを実行したときに警告が表示されました。 その警告を見て「へーそうなんだ」と思ったので今回はそれについて少し書きたいと思います。 表示される警告 その警告ですが下記のような文言が表示されます。 passes Lock by value: sync.Mutex これについて調べたんですが警告が表示される原因が 「mutexを値渡しで渡しているから」です。 手っ取り早く警告をなくしたい場合、mutexをポインタ渡しで渡せばオッケーです! なぜmutexを値渡しで渡すと警告が出るのか。 それは 「値コピーしてしまうとロックしている状態のまま別のmutexインスタンスになってしまうから」 です。 golangではmutexインスタンスは常にポインタ渡しで渡すようにしておきましょう。 実例 簡単な例ですがmutexを使用した場合に
![golangのmutexはポインタで渡すようにしよう - エンジニアはこわくない](https://cdn-ak-scissors.b.st-hatena.com/image/square/64af935e9b5e6d65eacecb8ea3a69e6ea08fa341/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ft%2Ftsujitaku50%2F20170224%2F20170224131252.jpg)