Go - 在查询周围使用if语句时出错

时间:2016-04-05 09:08:41

标签: go

我正在尝试运行它 - 这在PHP中可以正常工作但在Go中我收到错误:

if strings.EqualFold(update_status, "live") {
    stmt, err := dbmap.Prepare(
        "UPDATE Apps SET version=?,deploy_status=?,status=?,live_date=? WHERE id=?")
} else {
    stmt, err := dbmap.Prepare(
        "UPDATE Apps SET version=?,deploy_status=?,status=? WHERE id=?")
}

我收到controllers/apps.go:1095: undefined: stmt in stmt.Exec的错误。

如何更改此功能以便它可以使用?

由于

1 个答案:

答案 0 :(得分:0)

您的问题是您使用的是Short Variable Declaration,因此您的stmterr变量的范围限定为条件的内部块(if和{else {1}}。

这应该可以解决问题:

var stmt *sql.Stmt
var err error
if strings.EqualFold(update_status, "live") {
    stmt, err = dbmap.Prepare(
        "UPDATE Apps SET version=?,deploy_status=?,status=?,live_date=? WHERE id=?")
} else {
    stmt, err = dbmap.Prepare(
        "UPDATE Apps SET version=?,deploy_status=?,status=? WHERE id=?")
}
//stmt is still defined here