LoginSignup
0
0

More than 3 years have passed since last update.

構造体の中の構造体

Last updated at Posted at 2019-05-13

構造体がネストしている場合の書き方は下記のように書いてましたが、

構造体が複雑になればなるほど分割され、ややこしくなってしまったので

もう少しまとめられない物だろうかとやってたメモ

    sampleA struct {
        Header sampleB
    }
    sampleB struct {
        Code string
    }

勘違いしていた書き方

    sampleA struct {
        Header struct {
            sampleB struct {
                Code string
            }
        }
    }

Headerという要素の中は構造体でsampleBがもともと入ってたのだから入れましたがIDEでエラーが出る。
構造体にどんな違いがあるのかを確認するため元の構造体と変更後の構造体の違いを見てみた。

元の構造体

 {Header:{Code:}}

変更後の構造体

 {Header:{sampleB:{Code:}}}

sampleResponseHeaderはいらなかったですね。
なので修正するとしたらこうなるのですね。

    sampleA struct {
        Header struct {
            Code string
        }
    }

今回みたいな2個程度なら別に分けてあっても、まとめてもさほど違いを感じませんが、

どうしても複雑な構造体を扱う必要が出た場合はまとめたほうが見やすそう。

複雑にならないのがベストですけどね。

上記のようにした場合、値を入れる時がこんな感じにしなければならずややこしく見える。

    SampleA{
        Header: struct {
            Code string
        }{
            "test",
        },
    }

できればこんな感じでいれたいと思うので、なんでもかんでもまとめて書くのは良く無さそう。

    SampleA{
        Header: struct {
            Code: "test"
        },
    }

※上記書き方をした場合「 missing type in composite literal 」エラーが出た。

シンプルな場合はやっぱり分けて構造体定義したほうが可読性は上がりそうなので使い分けが必要ですかね。

参考

0
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
0
0