2015-02-12 61 views
23

Tôi đang tự hỏi làm thế nào tôi có thể định nghĩa và khởi tạo và mảng của cấu trúc bên trong một cấu trúc lồng nhau, ví dụ:Khởi tạo một mảng của cấu trúc bên trong một cấu trúc lồng nhau trong 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 
} 

Bây giờ làm thế nào tôi có thể khởi một cấu trúc như vậy và nếu ai đó có ý tưởng khác về cách tạo cấu trúc.

Cảm ơn

Trả lời

26

Trong trường hợp của bạn cú pháp văn chương viết tắt sẽ là:

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

Hoặc ngắn hơn nếu bạn không muốn chìa khóa: cú pháp giá trị cho literals:

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

BTW nếu Thành phố không chứa bất kỳ điều gì khác ngoài Thành phố [], chỉ cần sử dụng một phần Thành phố. Điều này sẽ dẫn đến một cú pháp ngắn hơn một chút, và loại bỏ một không cần thiết (có thể) lớp:

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, tôi đoán cho đến thời điểm này tôi không sử dụng đủ để nhúng điều và cấu trúc lồng nhau trong Go, sau khi tất cả các năm đối phó với java, điều này là hoàn toàn mới với tôi, nhưng cảm ơn rất nhiều: D – user2422033

6

Full ví dụ với tất cả mọi thứ được viết ra một cách rõ ràng:

state := State{ 
    id: "Independent Republic of Stackoverflow", 
    Cities: Cities{ 
     cities: []City{ 
      City{ 
       id: "Postington O.P.", 
      }, 
     }, 
    }, 
} 
Các vấn đề liên quan