golang学习笔记---struct对象序列号和反序列华

package main

import (
	"encoding/xml"
	"fmt"
)

type person struct {
	Name string `xml:"name,attr"`
	Age  int    `xml:"年龄"`
}

func main() {
	p := person{Name: "sary", Age: 18}
	var data []byte
	var err error
	if data, err = xml.MarshalIndent(p, "", "    "); err != nil {
		fmt.Println(err)
		return
	} else {
		fmt.Println(string(data))
	}

	p2 := new(person)
	if err = xml.Unmarshal(data, p2); err != nil {
		fmt.Println(err)
		return
	} else {
		fmt.Println(p2)
	}

}

  输出:

<person name="sary">
    <年龄>18</年龄>
</person>
&{sary 18}

  注意: flag对于需要同名的多个参数则不适合(可将多个同名的参数作为一个字串参数,再自行截取再配对)

 

属性自定义:`xml:"name,attr"`

package main

import (
	"encoding/xml"
	"fmt"
)

type Person struct {
	Name string `xml:"name,attr"`
	Age  int
}

func main() {
	p := Person{Name: "sary", Age: 30}
	var data []byte
	var err error
	if data, err = xml.MarshalIndent(p, "", "    "); err != nil {
		fmt.Println(err)
		return
	} else {
		fmt.Println(string(data))
	}

	p2 := new(Person)
	if err = xml.Unmarshal(data, p2); err != nil {
		fmt.Println(err)
		return
	} else {
		p2.Age = 18
		fmt.Println(p2)
	}

}

  

posted on 2021-10-04 13:58  清明-心若淡定  阅读(71)  评论(0编辑  收藏  举报