Go結構體巢狀
阿新 • • 發佈:2020-07-17
1. Go結構體巢狀
1.1 巢狀別的結構體
package main import ( "encoding/json" "fmt" ) type addr struct { Province string City string } type info struct { Age int Email string } type student struct { Name string Address addr // 巢狀別的結構體 } func main() { st := student{ Name:"網五", Address: addr{ Province: "bj", City: "bj", } } s1,_ := json.Marshal(st) fmt.Println(st) fmt.Println(string(s1)) }
結果
{網五 {bj bj} { } {0 }} {"Name":"網五","Address":{"Province":"bj","City":"bj"},"Province":"","City":"","Age":0,"Email":""}
1.2匿名巢狀別的結構體,型別名做名稱
package main import ( "encoding/json" "fmt" ) type addr struct { Province string City string } type info struct { Age int Email string } type student struct { Name string Address addr // 巢狀別的結構體 addr // 匿名巢狀別的結構體,就使用型別名做名稱 info } func main() { st := student{ Name: "網五", Address: addr{ Province: "bj", City: "bj", }, addr:addr{"bj", "bj"}, // 屬性名稱和結構體名稱保持一致 info:info{19,"aaa@navinfoolpm"}, } s1,_ := json.Marshal(st) fmt.Println(st) fmt.Println(string(s1)) }
結果
{網五 {bj bj} {bj bj} {19 aaa@navinfoolpm}} {"Name":"網五","Address":{"Province":"bj","City":"bj"},"Province":"bj","City":"bj","Age":19,"Email":"aaa@navinfoolpm"}