我对Golang视图模板有一个问题,我目前在struct属性中使用小写来构建结构,然后将其作为地图传递给视图。
这是我的结构看起来像:
type User struct {
uid int
username, departname string
}
然后我将结构集合传递给文件视图:
func (App *App) indexHander(w http.ResponseWriter, r *http.Request) {
rows, err := App.db.Query("SELECT * FROM userinfo")
checkErr(err)
t, _ := template.ParseFiles(App.folderpath + "/list.gtpl")
users := make([]User, 0) // define empty collection of users
for rows.Next() {
var uid int
var username string
var departname string
var created string
err = rows.Scan(&uid, &username, &departname, &created)
checkErr(err)
users = append(users, User{uid, username, departname})
}
t.Execute(w, users)
defer rows.Close()
}
,这是我查看的HTML代码:
<html>
<head>
<title></title>
</head>
<body>
<ul>
{{ range . }}
<li>{{ .username }}</li>
{{ end }}
</ul>
</body>
</html>
上面的代码给了我空用户数据: https://jsfiddle.net/kkv687yv/2/
但是,在struct中使用大写首字母给我的工作结果:
STRUCT
type User struct {
Uid int
Username, Departname string
}
HTML
<html>
<head>
<title></title>
</head>
<body>
<ul>
{{ range . }}
<li>{{ .Username }}</li>
{{ end }}
</ul>
</body>
</html>
现在可以使用
有人能解释一下这种行为吗?
答案 0 :(得分:3)
阅读文档here
可以导出标识符以允许从另一个包访问它。如果两者都导出标识符:
不会导出所有其他标识符。