1. 程式人生 > 實用技巧 >Go結構體巢狀

Go結構體巢狀

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"}