我有了与该类型接口{}参数,就像一个功能:Golang接口结构
func LoadTemplate(templateData interface{}) {
在我的情况,templateData是一个结构,但每次它有不同的结构。我使用“interface {}”类型,因为它允许我发送所有类型的数据。
我使用这个templateData将数据发送到模板:
err := tmpl.ExecuteTemplate(w, baseTemplateName, templateData)
但现在我要追加一些新的数据,我不知道该怎么做,因为“接口”型不允许我添加/追加任何东西。
我试图将接口转换为结构,但我不知道如何将数据追加到具有未知结构的结构。
如果我用下面的功能,我可以看到接口的数据:
templateData = appendAssetsToTemplateData(templateData)
func appendAssetsToTemplateData(t interface{}) interface{} {
switch reflect.TypeOf(t).Kind() {
case reflect.Struct:
fmt.Println("struct")
s := reflect.ValueOf(t)
fmt.Println(s)
//create a new struct based on current interface data
}
return t
}
任何想法,我怎么能一个孩子追加到初始界面参数(templateData)?或者我怎样才能将它转换为一个结构或其他东西来追加新的子/数据?
请张贴的解决方案作为一个答案而不是更新的问题。如果你使用的答案是不同的问题,请举报这个问题为重复的其他问题。如果它不是,它是不同的,请张贴适当详细的解答,以帮助未来的访客,并避免混淆。谢谢。 – Bugs