はじめに この記事は2021年Goアドベントカレンダー(3)の9日目の記事です。 ポインタにするか値にするか考え方針をまとめてみました。 この記事で書かれていることは既に多くの方が考えたり記事にしたりしていますが、どうするべきか迷うことがあり、例となるコード付きで方針をまとめたいと考え記事にします。(この記事の内容は個人的な方針です。サービスの特性などで変わる点はあると思います。) 以下の3つのパターンで記載しています。 構造体について 関数の引数について メソッドのレシーバについて 間違いなどありましたら教えていただけると嬉しいです。 構造体について 構造体のフィールドに、スライスやmap、ポインタなどの参照型を持つ場合はポインタ 変更不可な構造体として、運用する場合は値でも良い(コンストラクタを定義し必ずコンストラクタで生成するようにする、不変なオブジェクトなど) 迷ったらポインタ 構
![Go、ポインタにするか値にするかの方針を考えてみた - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/c8fab581666488d35c26b9c8acbbbe2c5eda5b3a/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9R28lRTMlODAlODElRTMlODMlOUQlRTMlODIlQTQlRTMlODMlQjMlRTMlODIlQkYlRTMlODElQUIlRTMlODElOTklRTMlODIlOEIlRTMlODElOEIlRTUlODAlQTQlRTMlODElQUIlRTMlODElOTklRTMlODIlOEIlRTMlODElOEIlRTMlODElQUUlRTYlOTYlQjklRTklODclOUQlRTMlODIlOTIlRTglODAlODMlRTMlODElODglRTMlODElQTYlRTMlODElQkYlRTMlODElOUYmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTY4YjFmMmI4MjM1NTA4ZDQ4MTMyZTk1Zjk4YjFlZTI1%26mark-x%3D142%26mark-y%3D100%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBTaGludGFOYWthbWEmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTFmMGU2MDBhY2UxOWJmNjIwZWEwNGVjMzc3YWM2NmM1%26blend-x%3D142%26blend-y%3D504%26blend-mode%3Dnormal%26s%3D9334224a8434367ce93712bf8390f74e)