goでの構造体の初期化と同時に値を代入する方法は2つあってメンバを順番に入れる方法とメンバを明示的に指定する方法がある。
type T struct { Name string Age int }
こんな構造体があるときに初期化は
// 1 t := T{"tanaka", 50} // 2 t := T{Name: "tanaka", Age: 50}
上記のうち1は構造体に変更が加わった際にメンバが追加や順番の変更に対応できなくて困る。
type T struct { Name string Age int Hex int16 }
こんな感じにメンバが追加になっても2の書き方をしておけば1はコンパイルエラーが出るがでない。
初期化忘れでもコンパイルエラーとならなくて済む。(未指定のフィールド値は0で初期化)
ただしこれが原因でのエラーとなるケースは救えなくなるのが欠点。
newで初期化してポインタ型変数として使う方法をとっておけば初期値はふられるのでそっちの方が良いのだろうか。