Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何将结构呈现为html模板?_Go - Fatal编程技术网

Go 如何将结构呈现为html模板?

Go 如何将结构呈现为html模板?,go,Go,我打算用数据呈现html,在呈现时,我不知道如何呈现其他文件的结构,返回到控制器上进行呈现 代码: packages controller type Index struct { Title string Body string } func IndexController(w http.ResponseWriter , r *http.Request){ if r.Method == "POST"{ data := &Index{ Title: "He

我打算用数据呈现html,在呈现时,我不知道如何呈现其他文件的结构,返回到控制器上进行呈现

代码:

packages controller

type Index struct {
Title string
Body  string
}

func IndexController(w http.ResponseWriter , r *http.Request){

if r.Method == "POST"{

    data := &Index{
        Title: "Hello",
        Body:  "Welcome to the WebGo.",
    }

    ff := renders.Sample{Temppath:"templates/index.tmpl",Data:data}
    ff.Render(w)
我的渲染包:

package renders

import (
   "html/template"
   "log"
   "net/http"
 )

type Sample struct {
  Temppath string
  Data struct{}   ## i don't know how to use pass value of package controller to renders package ?
}

func (obj Sample) Render(w http.ResponseWriter) error {

 var indexTemplate = template.Must(template.ParseFiles(obj.Temppath))
 if err := indexTemplate.Execute(w, obj.Data); err != nil {
    log.Println(err)
    return err
 }
 return nil
}
html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="/static/js/sample.js"></script>
    <title>{{.Title}}</title>
    <style>
        body {
            font-family: sans-serif;
        }
        h1 {
            background: #ddd;
        }
        #sidebar {
            float: right;
        }
    </style>
</head>
<body>
    <h1>{{.Title}}</h1>
    <div id="sidebar">
        {{block "sidebar" .}}

        <ul>

        </ul>
        {{end}}
    </div>

    {{block "content" .}}
    <div id="content">
        {{.Body}}
    </div>
    {{end}}
</body>

</html>

{{.Title}
身体{
字体系列:无衬线;
}
h1{
背景:ddd;
}
#边栏{
浮动:对;
}
{{.Title}
{{块“侧边栏”}
{{end} {{块“内容”} {{.Body} {{end}

如何将
类型索引结构
传递到呈现包以供使用
indexTemplate.Execute(w,obj.Data)
在struct
示例
中声明字段
数据
接口{

type Sample struct {
    Temppath string
    Data     interface{}
}

然后,类型
Sample
也可以在其他控制器中用作将要传递到模板的任何数据的占位符。

data struct{}
更改为
data interface{}
谢谢,修复,再次感谢,或者由您代替
data struct{}
(或
data interface{}
),您可以直接将创建的索引类型指定为
Data controller.Index
)@IPutuSusila add作为asnwerI,我很高兴它有所帮助@好的,谢谢。