LoginSignup
2
0

More than 1 year has passed since last update.

Golang の構造体の初期値をnil にしたいときはポインタ型でフィールド変数で定義する

Posted at

Golangの初期値

Golangはプリミティブ型にそれぞれ初期値を持っている。
string型 なら""
int型 なら0

など、ゼロ値という名前でそれぞれのプリミティブ型を定義した時になんの値が入っているかが既に決まっている。

しかし、フィールド変数の型をユーザ定義型にしている構造体を扱う場合、単純に構造体のインスタンスを生成してしまうと、ユーザ定義型を遡ってプリミティブ型のゼロ値を代入された構造体が生成され、特定のフィールドだけnil にすることができません。

こうしてしまうと、他のAPIからjson を読み込みたい時などに全てのフィールドに空文字が入ってしまったり、0 が入ってしまったりしてしまうため、あまり良いとは言えません。

解決策

フィールド定義を行う時にユーザ定義型のポインタ型にしましょう。
ポインタ型のゼロ値はnil なので、代入されていないフィールドが自動的にnil になって返却されます。

参考元

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0