golang-encoding模块学习
发布时间:2020-12-16 19:13:53 所属栏目:大数据 来源:网络整理
导读://Golang中encoding的用法 package main import ( "bytes" "encoding/binary" "encoding/hex" "encoding/xml" "fmt" "os" ) func goxml() { type Address struct { City,State string } //xml元素节点增加属性,需要重新定制结构体 type ElementWithAttr str
//Golang中encoding的用法 package main import ( "bytes" "encoding/binary" "encoding/hex" "encoding/xml" "fmt" "os" ) func goxml() { type Address struct { City,State string } //xml元素节点增加属性,需要重新定制结构体 type ElementWithAttr struct{ AttrOne string `xml:"attrone,attr"` AttrTwo string `xml:"attrtow,attr"` } type Person struct { XMLName xml.Name `xml:"person"` Id int `xml:"id,attr"` Sex string `xml:"sex,attr"` FirstName string `xml:"name>first"` LastName string `xml:"name>last"` Age int `xml:"age"` Height float32 `xml:"height,omitempty"` EWA ElementWithAttr `xml:elementwithattr` //这里写子节点或者属性的时候(凡是不是一个单独字符串),必须使用""来进行包封,否则反射的时候认不出来 EWAChild string `xml:"elementwithattr>ewachild"` Married bool Address Comment string `xml:",comment"` } v := &Person{Id: 13,FirstName: "John",LastName: "Doe",Age: 42,Sex:"Female"} v.Comment = " Need more details. " v.Address = Address{"Hanga Roa","Easter Island"} v.EWA = ElementWithAttr{"AttribteOne","AttributeTwo"} v.EWAChild = "ElementWithAttrChildNode" enc := xml.NewEncoder(os.Stdout) enc.Indent(" "," ") if err := enc.Encode(v); err != nil { fmt.Printf("error: %vn",err) } } func main() { pi := 3.1415926 buf := bytes.Buffer{} //使用的是小编码,低地址对应低字节 binary.Write(&buf,binary.LittleEndian,&pi) //常量浮点数默认是float64 fmt.Printf("buf=%#vn",buf.Bytes()) var rpi float64 binary.Read(&buf,&rpi) fmt.Printf("rpi=%#vn",rpi) //和python的binascii库的作用一样,16进制和ascii字符之间的转换 src := "Go is good language!我们都一样" //根据编码后长度来分配缓存空间 dst := make([]byte,hex.EncodedLen(len(src))) hex.Encode(dst,[]byte(src)) fmt.Printf("dst=%vn",dst) fmt.Printf("dst(hex)=%sn",string(dst)) //根据解码长度来分配缓存空间 dst2 := make([]byte,hex.DecodedLen(len(dst))) hex.Decode(dst2,dst) fmt.Printf("dst2=%vn",dst2) fmt.Printf("dst2.(string)=%sn",string(dst2)) goxml() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |