登录
首页 >  Golang >  Go问答

评估字段 X 中的类型 Y 无法使用模板

来源:stackoverflow

时间:2024-02-24 18:36:26 283浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《评估字段 X 中的类型 Y 无法使用模板》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

在 go 中,我循环查询结果并将结果附加到切片中。然后,我尝试在 html 模板中显示数据,但是我不断收到此错误: executing "orders.html" at <.customer>: can'tvaluate field customer in type []main.order 这是我的代码:

type order struct {
    order_id int
    customer string
    date_of_purchase string
}

func orderpage(w http.responsewriter, r *http.request) {
db := dbconnection()
var (
    order_id int
    customer string
    date_of_p string
    ps []order
)
rows, err := db.query("select * from orders where customer = 'david'")
if err != nil {
    panic(err.error())
}
for rows.next() {
    err = rows.scan(&order_id, &customer, &date_of_p)
    if err != nil {
        log.println(err)
        http.error(w, "there was an error", http.statusinternalservererror)
        return
    }
    ps = append(ps, order{order_id: order_id, customer: customer, date_of_purchase: date_of_p})
}
temp, err := template.parsefiles("templates/orders.html")
if err != nil { 
  log.print("template parsing error: ", err)
}
err = temp.execute(w, ps)
if err != nil {
    fmt.println(err)
}
}

我的 html 模板如下所示:

Hello

Your username is {{ .Customer }}

{{ range . }}

{{ .Order_id }}

{{ end }}

我从数据库获取数据,只是无法在html页面上显示它。


解决方案


您将 psmain.order 的一部分)传递到模板。在您的模板中,. 仍然是切片。

您的线路

您的用户名是 {{ .customer }}

尝试访问此 []main.order 的成员 customer - 它没有。

您可能希望从切片的第一个元素中获取客户名称,或者将一个结构传递给具有此字段的模板,例如像这样:

type customer struct {
    orders []order
    username string
}

然后您需要像这样更改模板:

Hello

Your username is {{ .Username }}

{{ range .Orders }}

{{ .Order_id }}

{{ end }}

好了,本文到此结束,带大家了解了《评估字段 X 中的类型 Y 无法使用模板》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>