2015-02-12 10 views
23

Zastanawiam się w jaki sposób można zdefiniować i zainicjować i tablicę kodowanym wewnątrz zagnieżdżonej struktury, na przykład:zainicjować tablicę kodowanym wewnątrz zagnieżdżonej struktury w golang

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

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

type Cities struct { 
    cities []City 
} 

Teraz jak można zainicjować taką strukturę a jeśli ktoś ma inny pomysł na temat tworzenia samej struktury.

Dzięki

Odpowiedz

26

w Twoim przypadku skrótem składnia dosłowne byłoby:

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

lub krótszy, jeśli nie chcesz klucz: wartość dla literałów składni:

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

BTW jeśli Miasta nie zawierają niczego poza [] Miastem, po prostu użyj kawałka Miasta. Doprowadzi to do nieco krótszego składni i usunąć niepotrzebne (ewentualnie) warstwy:

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

Idealne Chyba aż do chwili, kiedy nie jestem przyzwyczajony wystarczy do osadzenia rzeczy i zagnieżdżonych struktur w Go, po wszystkich latach zajmujących się java, jest to dla mnie całkowicie nowe, ale wielkie dzięki: D – user2422033

6

Pełny przykład ze wszystkim wypisany extenso:

state := State{ 
    id: "Independent Republic of Stackoverflow", 
    Cities: Cities{ 
     cities: []City{ 
      City{ 
       id: "Postington O.P.", 
      }, 
     }, 
    }, 
} 
Powiązane problemy