1. 程式人生 > >struct對象的序列化和反序列化

struct對象的序列化和反序列化

開頭 ttr enc fff UNC water 分享圖片 truct err

package main import ( "encoding/xml" "fmt" ) type person struct { Name string Age int } func main() { p := person{Name: "張三", Age: 18} //無縮進生成xml if data, err := xml.Marshal(p); err != nil { fmt.Println(err) return }else{ //註意,else也在if data, err := xml.Marshal(p); err != nil作用域內,放在外面會找不到data fmt.Println(string(data)) fmt.Println() } //有縮進生成xml(第二個參數:在每行的開頭加的前綴。第三個參數:縮進) if data, err := xml.MarshalIndent(p, "", " "); err != nil { fmt.Println(err) return }else{ //註意,else也在if data, err := xml.Marshal(p); err != nil作用域內,放在外面會找不到data fmt.Println(string(data)) fmt.Println() } //全局輸出(不用包含在if-else裏) var data []byte var err error if data, err = xml.MarshalIndent(p, "#", " "); err != nil { fmt.Println(err) return } fmt.Println(string(data)) fmt.Println() //反序列化 p2 := new(person) if err = xml.Unmarshal(data, p2);err != nil { fmt.Println(err) return } fmt.Println(p2) fmt.Println() //加上屬性 type new_person struct { Name string `xml:"name,attr"` Age int } new_p := new_person{Name: "lucy", Age: 18} if data, err := xml.Marshal(new_p); err != nil { fmt.Println(err) return }else{ //註意,else也在if data, err := xml.Marshal(p); err != nil作用域內,放在外面會找不到data fmt.Println(string(data)) fmt.Println() } }

輸出:
技術分享圖片

struct對象的序列化和反序列化