Я нахожусь в процессе изучения веб-разработки GoLang, где я пробую простой пример отображения таблицы в базе данных mysql на веб-странице, отображаемой с использованием шаблона Golang.Ниже приведен фрагмент моего кода, который не работает. Сбой рендеринга таблицы, где диапазон функция на шаблоне не работает
Server.go
package main
import (
"fmt"
"net/http"
_ "github.com/go-sql-driver/mysql"
"database/sql"
"os"
"html/template"
)
type Employee struct {
fname, sname, dname, email string
}
func helloWorld(w http.ResponseWriter, r *http.Request){
name, err := os.Hostname()
checkErr(err)
fmt.Fprintf(w, "HOSTNAME : %s\n", name)
}
func dbConnect() (db *sql.DB) {
dbDriver := "mysql"
dbUser := "root"
dbPass := "password"
dbHost := "mysql.go"
dbPort := "3306"
dbName := "company"
db, err := sql.Open(dbDriver, dbUser +":"+ dbPass +"@tcp("+ dbHost +":"+ dbPort +")/"+ dbName +"?charset=utf8")
checkErr(err)
return db
}
func dbSelect() []Employee{
db := dbConnect()
rows, err := db.Query("select * from employees")
checkErr(err)
employee := Employee{}
employees := []Employee{}
for rows.Next() {
var first_name, last_name, department, email string
err = rows.Scan(&first_name, &last_name, &department, &email)
checkErr(err)
employee.fname = first_name
employee.sname = last_name
employee.dname = department
employee.email = email
employees = append(employees, employee)
}
defer db.Close()
return employees
}
var tmpl = template.Must(template.ParseFiles("layout.html"))
//var tmpl = template.Must(template.ParseGlob("layout.html"))
func dbTableHtml(w http.ResponseWriter, r *http.Request){
table := dbSelect()
tmpl.ExecuteTemplate(w, "Index", table)
}
func dbTable(w http.ResponseWriter, r *http.Request){
table := dbSelect()
for i := range(table) {
emp := table[i]
fmt.Fprintf(w,"YESS|%12s|%12s|%12s|%20s|\n" ,emp.fname ,emp.sname ,emp.dname ,emp.email)
}
}
func main() {
http.HandleFunc("/", helloWorld)
http.HandleFunc("/view", dbTableHtml)
http.HandleFunc("/raw", dbTable)
http.ListenAndServe(":8080", nil)
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
layout.html
{{ define "Index" }}
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Maithanam Website</title>
<meta charset="UTF-8" />
</head>
<body>
<h1>Maithanammm website for mysql</h1>
{{ $length := len . }}
<h3>Length {{$length}}</h3>
<table border="1">
<tr>
<td>FirstName</td>
<td>SecondName</td>
<td>Department</td>
<td>Email</td>
</tr>
{{ range . }}
<tr>
<td>{{ .fname }}</td>
<td> {{ .sname }} </td>
<td>{{ .dname }} </td>
<td>{{ .email }} </td>
</tr>
{{ end }}
</table>
</body>
</html>
{{ end }}
WebPage введите описание изображения здесь