英文:
How can i pass list to template at Golang
问题
我想将以下代码修改为在模板中列出所有的名字:
rows := db.Query("SELECT * FROM names")
var names []string
for rows.Next() {
var name string
rows.Scan(&name)
names = append(names, name)
}
t.Execute(w, names)
然后在模板中使用以下代码:
{{range .}}
{{.}}
{{end}}
这样就可以按照你的需求在模板中列出所有的名字了。
英文:
I want to use a query which looks like
rows:= db.Query("SELECT * FROM names")
var name string
for rows.Next() {
rows.Scan(&name)
}
//There should be a map
t.Execute(w,p)
I want to shape up this to list all names in template like
{{range .name}}
{{.}}
{{end}}
How can i exactly do that?
答案1
得分: 0
// 这样做可以吗?
rows, err := db.Query("SELECT name FROM names")
if err != nil {
// 处理错误
}
names := make([]string, 0)
for rows.Next() {
var name string
err := rows.Scan(&name)
if err != nil {
// 处理错误
continue
}
names = append(names, name)
}
t := template.New("index")
t, _ = t.Parse(`{{range .}}{{.}} {{end}}`)
t.Execute(w, names)
注意事项
- 通常应避免在 SQL 查询中使用
*
,以明确选择了哪些字段 - 如果数据库表中的任何字段可能为
NULL
,则使用sql.NullBool
、sql.NullFloat64
、sql.NullInt64
或sql.NullString
来避免可能的错误
可能的输出
Bob Jim David Henry Jerry
英文:
Something Like This?
rows, err := db.Query("SELECT name FROM names")
if err != nil {
// Handle error
}
names := make([]string, 0)
for rows.Next() {
var name string
err := rows.Scan(&name)
if err != nil {
// Handle error
continue
}
names = append(names, name)
}
t := template.New("index")
t, _ = t.Parse(`{{range .}}{{.}} {{end}}`)
t.Execute(w, names)
Things to Note
- You should generally avoid using
*
in your sql queries to make it clear what fields are being selected - If any fields in your database table can be
NULL
, then usesql.NullBool
,sql.NullFloat64
,sql.NullInt64
orsql.NullString
to avoid possible errors
Possible Output
Bob Jim David Henry Jerry
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论