我是Go的新手,正在学习接口和结构。我有2个结构 - ServiceSection和SliderSection,我正在尝试用它们中的每一个完成以下2个任务-获取 JSON 响应并将其取消封送。使用结构通过“html/template”创建 HTML因此,我正在尝试创建一个通用函数来执行可用于多个结构的任务。该计划是再创建5-6个这样的结构。以下是我创建的代码-在执行上述程序时,我在填充HTMLcommon()函数中收到以下错误,同时取消marshade JSON -json:无法将元帅对象解构为 main 类型的 Go 值。我的接口这意味着它无法从 MyInterface 界面识别适当的结构。我不明白如何创建一个可用于多个结构的通用函数。任何帮助是值得赞赏的。
1 回答
三国纷争
TA贡献1804条经验 获得超7个赞
几件事:
Go接口是一个抽象 - 所以很少(如果有的话)你需要获取接口的地址
如果结构的方法需要更改结构的状态(并保留更改),请使用指针接收器。
因此,要解决您眼前的问题:
// err = json.Unmarshal(responseData, &hs) // address of an interface usually is not what you want
err = json.Unmarshal(responseData, hs)
并更新您的方法签名以使用指针接收器:
func (ss *ServiceSection) populateHTML(endpoint string, tmpl string) {
populateHTMLcommon(ss, endpoint, tmpl)
}
func (ss *SliderSection) populateHTML(endpoint string, tmpl string) {
populateHTMLcommon(ss, endpoint, tmpl)
}
https://play.golang.org/p/cGmm3Cs5XTk
- 1 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消