GoでJSONのnullをいい感じに扱いたいことがあるとします。しかしGoではnullを扱うのは容易ではありません。 Goにはnilが存在しますが、これはポインタ型でしか使えません。よってintやstring型では使用できません。Goはintやstring型は初期化しなかった場合、ゼロ値に初期化されます。intのゼロ値は0、stringのゼロ値は空文字列です。そのためJSONのnullをGoで扱おうとした場合、Goのゼロ値との区別ができません。 同じ問題はSQLでもあります。nullが存在するカラムから値を取得した際にnullとGoのゼロ値を区別する必要があります。そこでGoのdatabase/sqlではNullStringのようなstructが定義されています。 type NullString struct { String string Valid bool // Valid is t
![GoでJSONのnullをいい感じに扱いたい - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/0d1f8dda8be90660991ecbc83d535338129a4121/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9R28lRTMlODElQTdKU09OJUUzJTgxJUFFbnVsbCVFMyU4MiU5MiVFMyU4MSU4NCVFMyU4MSU4NCVFNiU4NCU5RiVFMyU4MSU5OCVFMyU4MSVBQiVFNiU4OSVCMSVFMyU4MSU4NCVFMyU4MSU5RiVFMyU4MSU4NCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ZTc3NDI2NzM4ZTFiZGQ5MTE1YTcyZTQ3Yzg0YTJmNDM%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBjYXRhdHN1eSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MmViOGViYTkyNjRlZTI0ZGUzMzFmZmQzYmYzZTNlYzM%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Df8069ea7450732895b672947b413ae78)