【问题标题】:Go nested func not allowed不允许使用嵌套函数
【发布时间】:2014-08-31 12:25:21
【问题描述】:

我想获取我的数据库的一个表的值并在 html 中解析它们。这是我曾经尝试执行的代码,但我收到了一个名为 nested func not allowed 的错误。

我开始创建一个结构:

type App struct{
    Title string
    Author string
    Description string
}

我创建了一个函数来渲染模板:

func render(w http.ResponseWriter, tmpl string){
    tmpl = fmt.Sprintf("templates/%s", tmpl)
    t, err := template.ParseFiles(tmpl)
    if err != nil{
        log.Print("template parsing error: ", err)
    }
    err = t.Execute(w, "")
    if err != nil{
        log.Print("template executing error: ", err)
    }
}

然后,我在这里从数据库中获取应用程序并尝试将它们呈现为 html。

func myApps(w http.ResponseWriter, r *http.Request){
    db, err := sql.Open("postgres"," user=postgres dbname=test host=localhost password=1234 sslmode=disable")
    if err != nil{
        log.Fatal(err)
    }
        rows, err := db.Query(`SELECT title, author, description FROM apps
                                 WHERE title ILIKE $1
                                 OR author ILIKE $1
                                 OR description ILIKE $1`)
            defer rows.Close()

            apps := []App{}
            for rows.Next(){
                b := App{}
                err := rows.Scan(&b.Title, &b.Author, &b.Description)
                apps = append(apps, b)

    render(w, "myapps.html", apps)
}

提前感谢您!

【问题讨论】:

    标签: html go render


    【解决方案1】:

    行周围可能有一些类型,包括for statement:

    for rows.Next(){
    

    我没有看到开头的“{”在其他任何地方关闭。

    (或者是关闭了,但是func myApps没有关闭)

    也许应该是:

            for rows.Next() {
                b := App{}
                err := rows.Scan(&b.Title, &b.Author, &b.Description)
                apps = append(apps, b)
            }
            render(w, "myapps.html", apps)
    }
    

    无论如何,运行go fmt 总是一个好主意。

    【讨论】:

    • 是的,谢谢,那是真的!现在的问题是告诉我“不能将应用程序
    • @devtreat 这是一个不同的问题。是的,render 期望 tmpl string 作为第二个参数,所以这是有道理的。
    • 我应该怎么做才能正确呈现应用程序的值?。谢谢。
    • @devtreat 不确定,因为我不知道这种渲染,但提出一个更专注于它的新问题会更有效率。
    • 好吧,那么我将不得不提出一个关于它的新问题。无论如何,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2015-08-02
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2016-02-06
    相关资源
    最近更新 更多