У меня такая проблема, на веб сервере не передаются конкретные данные из массива, то есть когда я в шаблоне пишу ., то всё нормально и всё выводится, ну а когда я пытаюсь вывести допустим тот же .name, то он ничего не выводит, и вовсе всё что идет дальше .name в шаблоне не работает.
Вот код:
Проблемный кусок кода из main.go -
type Ship struct {
id uint16
name string
price uint16
people uint16
kg uint16
speed uint16
desc uint16
}
var ships_full = []Ship{}
func shop_page(page http.ResponseWriter, req *http.Request) {
temp, err := template.ParseFiles("templates/html/shop.html", "templates/html/header.html", "templates/html/footer.html")
if err != nil {
fmt.Fprintf(page, err.Error())
}
db, err := sql.Open("mysql", "re-incarnation:537003DOSAv$@tcp(127.0.0.1:3306)/poplavok")
if err != nil {
panic(err)
}
defer db.Close()
res, err := db.Query("SELECT * FROM `ships`")
if err != nil {
panic(err)
}
ships_full = []Ship{}
for res.Next() {
var ship Ship
err = res.Scan(&ship.id, &ship.name, &ship.price, &ship.people, &ship.kg, &ship.speed, &ship.desc)
if err != nil {
panic(err)
}
ships_full = append(ships_full, ship)
//fmt.Println(fmt.Sprintf("Ship: %s", ship.name))
// spew.Dump(ships)
}
temp.ExecuteTemplate(page, "shop_page", ships_full)
}
Ну а вот код шаблона -
{{ define "shop_page" }}
{{ template "header"}}
<h1>Shop</h1>
{{ range . }}
<h1>{{ .name }}</h1>
{{ else }}
<h1>test</h1>
{{ end }}
{{ template "footer"}}
{{ end }}