// 可以用于 PEM 编码的结构体,编码后格式如下 /* -----BEGIN Type----- Headers base64-encoded Bytes -----END Type----- */ type Block struct { Type string// The type, taken from the preamble (i.e. "RSA PRIVATE KEY"). Headers map[string]string// Optional headers. Bytes []byte// The decoded bytes of the contents. Typically a DER encoded ASN.1 structure. }
1 2 3 4
// 将 b PEM 编码后的数据写入 out funcEncode(out io.Writer, b *Block)error // 对 PEM 编码后的数据进行解码,返回 Block 对象,一般带有 TLS 私钥或公钥 funcDecode(data []byte)(p *Block, rest []byte)
encoding/xml 包
与 encoding/json 类似,encoding/xml 实现了 xml 格式数据的编码与解码.主要用于对象实例与 xml 格式数据间的相互转换.
1 2 3 4 5 6
// 将对象实例转换为 xml 格式数据 funcMarshal(v interface{})([]byte, error) // 将对象实例转换为 xml 格式数据,每个 xml 元素以新的缩进行及 prefix 开头,且根据嵌套深度跟一个或多个 indent 副本,可用于美化输出 funcMarshalIndent(v interface{}, prefix, indent string)([]byte, error) // 将 xml 格式数据转换为对象实例 funcUnmarshal(data []byte, v interface{})error
type Address struct { City, State string } type Person struct { XMLName xml.Name `xml:"person"` Id int`xml:"id,attr"` FirstName string`xml:"name>first"` LastName string`xml:"name>last"` Age int`xml:"age"` Height float32`xml:"height,omitempty"` Married bool Address Comment string`xml:",comment"` }
funcmain() { person := &Person{Id: 13, FirstName: "John", LastName: "Doe", Age: 42} person.Comment = " Need more details. " person.Address = Address{"Hanga Roa", "Easter Island"}