Golang使用小写字母作为Struct属性中的第一个字母
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang使用小写字母作为Struct属性中的第一个字母相关的知识,希望对你有一定的参考价值。
我对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>
但是,使用大写首字母ini 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>
它现在有效
有人能解释一下这种行为吗?
答案
阅读文档here
可以导出标识符以允许从另一个包访问它。如果两者都导出标识符:
- 标识符名称的第一个字符是Unicode大写字母(Unicode类“Lu”);
- 标识符在包块中声明,或者是字段名称或方法名称。
不导出所有其他标识符。
以上是关于Golang使用小写字母作为Struct属性中的第一个字母的主要内容,如果未能解决你的问题,请参考以下文章