2017-03-17 6 views
1

Goにすることにより、それぞれは、例えば、インラインアイテムを追加/グループ化の違いです:はインライン構造体のアイテムを行くか、または構造体を作成するときにライン

type Item struct { 
    a, b, c uint32 
    d  uint32 
} 

宣言項目バーサス行ずつ、何かをのように:

type Item struct { 
    a uint32 
    b uint32 
    c uint32 
    d uint32 
} 

アイテムがどのように表現されるかだけの問題です。

従うのがベストプラクティスとみなされますか?

答えて

0

違いはなく、2つのタイプが同じです。

a := struct { 
    a, b, c uint32 
    d  uint32 
}{} 

b := struct { 
    a uint32 
    b uint32 
    c uint32 
    d uint32 
}{} 

fmt.Printf("%T\n%T\n", a, b) 
fmt.Println(reflect.TypeOf(a) == reflect.TypeOf(b)) 

出力(Go Playground上でそれを試してみてください):あなたは論理的に一緒に所属するグループフィールドに同じ行に複数のフィールドを置いてもよい

struct { a uint32; b uint32; c uint32; d uint32 } 
struct { a uint32; b uint32; c uint32; d uint32 } 
true 

確認するには

は、この例を参照してください例えば、

type City struct { 
    Name  string 
    lat, lon float64 
} 

type Point struct { 
    X, Y float64 
    Weight float64 
    Color color.Color 
} 

引用符Spec: Struct types:

構造体は、タイプをそれぞれ有するシーケンスフィールドと呼ばれる名前付き要素の、です。

3の構造体を定義するものは、変更だけの事は、あなたがそれらを置く行の「数」であれば同じになるすべて:

  1. 注文が同じ(シーケンス)になります
  2. 名前は同じ
  3. タイプが同じ
になりますでしょう
0

違いはありません。あなたにとって読みやすいものを選んでください。

関連する問題