无法编写可在 Golang 中处理多个结构的泛型函数

我是Go的新手,正在学习接口和结构。我有2个结构 - ServiceSectionSliderSection,我正在尝试用它们中的每一个完成以下2个任务-

  1. 获取 JSON 响应并将其取消封送。

  2. 使用结构通过“html/template”创建 HTML

因此,我正在尝试创建一个通用函数来执行可用于多个结构的任务。该计划是再创建5-6个这样的结构。以下是我创建的代码-

在执行上述程序时,我在填充HTMLcommon()函数中收到以下错误,同时取消marshade JSON -

json:无法将元帅对象解构为 main 类型的 Go 值。我的接口

这意味着它无法从 MyInterface 界面识别适当的结构。

我不明白如何创建一个可用于多个结构的通用函数。任何帮助是值得赞赏的。


慕斯王
浏览 85回答 1
1回答

三国纷争

几件事:Go接口是一个抽象 - 所以很少(如果有的话)你需要获取接口的地址如果结构的方法需要更改结构的状态(并保留更改),请使用指针接收器。因此,要解决您眼前的问题:// err = json.Unmarshal(responseData, &hs) // address of an interface usually is not what you wanterr = 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
打开App,查看更多内容
随时随地看视频慕课网APP