如何使用作为接口参数传入的 Struct 来操作解码的 XML

有没有办法使用作为接口参数传入的结构来操作解码的 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 字段?


慕沐林林
浏览 176回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go