re-incarnation
@re-incarnation

Проблема с range. Как решить?

У меня такая проблема, на веб сервере не передаются конкретные данные из массива, то есть когда я в шаблоне пишу ., то всё нормально и всё выводится, ну а когда я пытаюсь вывести допустим тот же .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 }}
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
@falconandy
Поменяйте имена полей структуры - начните их с заглавной буквы, чтобы сделать публичными (например, Name string).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы