1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
你可以通過兩種方式做到這一點(diǎn)。首先,您可以將評論作為嵌入成員的更大結(jié)構(gòu)的一部分,并使其在每次編組成員時(shí)編組評論:
type Members struct {
XMLName xml.Name `xml:"members"`
Members []CommentedMember
}
type CommentedMember struct {
Member
comment xml.Comment
}
func (cm CommentedMember) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if cm.comment != nil {
err := e.EncodeToken(cm.comment)
if err != nil {
return err
}
}
return e.Encode(cm.Member)
}
type Member struct {
XMLName xml.Name `xml:"member"`
}
第二種方法是創(chuàng)建一個(gè)單獨(dú)的Comment類型并使您的Members結(jié)構(gòu)包含不同的類型:
type Members2 struct {
XMLName xml.Name `xml:"members"`
Members []interface{}
}
type Comment string
func (cm Comment) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if cm != "" {
return e.EncodeToken(xml.Comment(cm))
}
return nil
}
type Member struct {
XMLName xml.Name `xml:"member"`
}
這兩個(gè)都在操場上:https: //play.golang.org/p/3n-xH1Zc-n。
- 1 回答
- 0 關(guān)注
- 249 瀏覽
添加回答
舉報(bào)