我正在学习html / template,并且正在努力解决一个非常简单的示例。我有一个模板,我要在其中打印html文档的标题和“ nav”元素的一项“ li”。当我运行代码时,它将标题放在模板中,而不是在导航中
main.go:
package main
import (
"net/http"
"text/template"
)
var Page struct {
nav string
Title string
}
func test(w http.ResponseWriter, r *http.Request) {
Page.Title = "title"
Page.Nav = "nav1"
t, _ := template.ParseFiles("index.html")
t.Execute(w, Page)
}
func main() {
http.HandleFunc("/", test)
http.ListenAndServe(":8080", nil)
}
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{.Title}}</title>
</head>
<body>
<nav>
<li>{{.nav}}</li>
</nav>
</body>
</html>
输出:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>title</title>
</head>
<body>
<nav>
<li></li>
</nav>
</body>
</html>
答案 0 :(得分:-1)
用户Adrian解决了这个问题,供以后参考,问题是我在页面结构中使用小写字段,从而阻止了这些字段被html / template包导出和使用。
解决方案将页面struct中的nav字段重写为Nav