Golang interface de struct

J'ai une fonction qui a un paramètre du type d'interface{}, quelque chose comme:

func LoadTemplate(templateData interface{}) {

Dans mon cas, templateData est un struct, mais à chaque fois il a une structure différente. J'ai utilisé le type "{}", car il me permet d'envoyer toutes sortes de données.

Je suis en utilisant ce templateData pour envoyer les données au modèle:

err := tmpl.ExecuteTemplate(w, baseTemplateName, templateData)

Mais maintenant, je veux ajouter des nouvelles données et je ne sais pas comment le faire parce que l ' "interface" type ne m'autorise pas à ajouter/ajouter quoi que ce soit.

J'ai essayé de convertir l'interface d'une structure, mais je ne sais pas comment faire pour ajouter des données à une structure avec une structure inconnue.

Si j'utilise la fonction suivante, je vois l'interface de données:

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
}

Aucune idée de comment puis-je ajouter un enfant à l'interface initiale du paramètre (templateData)? Ou comment puis-je le transformer en une structure ou quelque chose d'autre afin d'ajouter de nouvelles enfant/données?

Merci de poster une solution, une réponse, non pas comme une mise à jour de la question. Si la réponse que vous avez utilisé est une autre question, merci de les signaler à cette question comme un double à l'autre question. Si c'est non, et c'est différent s'il vous plaît envoyer la bonne réponse détaillée pour aider les futurs visiteurs et pour éviter toute confusion. Je vous remercie.

OriginalL'auteur Pascut | 2017-06-28