2015-02-12 32 views
23

ich mich, wie kann ich definieren und initialisieren und Array von Strukturen innerhalb eines verschachtelten struct, zum Beispiel:Initialisiere

type State struct { 
    id string `json:"id" bson:"id"` 
    Cities 
} 

type City struct { 
    id string `json:"id" bson:"id"` 
} 

type Cities struct { 
    cities []City 
} 

Nun, wie kann ich eine solche Struktur Initialisieren und wenn jemand eine andere Idee hat, wie man die Struktur selbst erstellt.

Dank

Antwort

26

In Ihrem Fall die Stenografie Literalsyntax wäre:

state := State { 
    id: "CA", 
    Cities: Cities{ 
     []City { 
      {"SF"}, 
     }, 
    }, 
} 

oder kürzer, wenn Sie den Schlüssel nicht wollen: Wert Syntax für Literale:

state := State { 
    "CA", Cities{ 
     []City { 
      {"SF"}, 
     }, 
    }, 
}  

BTW Wenn Städte nur die Stadt [] enthalten, verwenden Sie einfach ein Stück Stadt. Diese auf eine etwas kürzere Syntax führen wird, und entfernen Sie unnötige (möglicherweise) Schicht:

type State struct { 
    id string `json:"id" bson:"id"` 
    Cities []City 
} 

type City struct { 
    id string `json:"id" bson:"id"` 
} 


func main(){ 
    state := State { 
     id: "CA", 
     Cities: []City{ 
      {"SF"}, 
     }, 
    } 

    fmt.Println(state) 
} 
+0

Perfect, ich denke, bis zum Moment, wo ich nicht gewohnt bin, Genug, um die Einbettung Sache und verschachtelte Strukturen in Go, nach all den Jahren mit Java zu tun, das ist völlig neu für mich, aber vielen Dank: D – user2422033

6

Voll Beispiel mit allem, was ausdrücklich geschrieben:

state := State{ 
    id: "Independent Republic of Stackoverflow", 
    Cities: Cities{ 
     cities: []City{ 
      City{ 
       id: "Postington O.P.", 
      }, 
     }, 
    }, 
} 
Verwandte Themen