有没有办法使用作为接口参数传入的结构来操作解码的 XML?
我将结构作为具有接口类型的参数传递,但在用它解码后,xml.Decode我无法指定其字段以将其字段检索为结构。我认为 go 抱怨它不知道要查找哪个结构,除非特别提及。
下面是一个示例函数:
func UpdateEntity(response *restful.Response, xml_template string, dataStruct interface{}, respStruct interface{}) (*restful.Response, interface{}) {
payload := renderCachedTemplate(response, xml_template, dataStruct)
resp, err := http.Post(url, "application/xml", payload)
if err != nil {
response.WriteErrorString(http.StatusInternalServerError, err.Error())
return nil, nil
}
defer resp.Body.Close()
dec := xml.NewDecoder(resp.Body)
if err = dec.Decode(respStruct); err != nil {
fmt.Printf("error: %v", err)
return nil, nil
}
return response, respStruct
}
func main() {
resp, respStruct := UpdateEntity(response, "template.xml", LoginStruct{}, UserStruct{})
fmt.Println(respStruct.Username)
}
此行fmt.Println(respStruct.Username)抱怨 Username 未定义为 interface{} 没有字段或方法 Username。
我将 UserStruct 作为其respStruct参数传递,例如具有 Username 字段。
有没有办法可以使用interface{}返回变量并使用预定义的 Struct 字段?
相关分类