为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕斯王 2022-09-05 10:11:21
我是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


查看完整回答
反对 回复 2022-09-05
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信