2 回答
TA贡献1735条经验 获得超5个赞
由于变量的范围,您面临问题。在 Golang 中,:=
在作用域内创建一个新变量。
rows, err := pnt.ReadConn("testdb").Query(sql, start, end, start, end)
在块中创建一个新的rows
anderr
变量if
,该变量在 if 块之外无法访问。
Go 中的简写声明
修复,
var sql string
var err error
var rows *sql.Rows
if pnt.Type == "newType" {
sql = `select code, count(*) count from (
select code
from code_table
where start >= ? and end <= ?
union
select code
from code_table
where start >= ? and end <= ?
) a group by code`
rows, err = pnt.ReadConn("testdb").Query(sql, start, end, start, end)
} else {
sql = `select code, count(*) count from code_table where start >= ? and end <= ?` group by code
rows, err = pnt.ReadConn("testdb").Query(sql, start, end)
}
if err == nil {
defer rows.Close()
for rows.Next() {
var code, count int
rows.Scan(&code, &count)
}
} else {
log.Println(err)
}
TA贡献1836条经验 获得超13个赞
在golang中“:=”意味着你声明一个变量并为其分配一个值GO将自动检测他的类型所以:示例 variable := 15
这是相同的 var variable int = 15
因此,当您执行此rows, err := pnt.switchConn("base", "read").Query(sql, start, end, start, end)
} else {
sql =
选择代码时, count(*) 从 code_table 中开始计数,其中 start >= ?并结束 <= ? group by code
rows, err := pnt.switchConn("base", "read").Query(sql, start, end)
}
您声明相同的变量行并犯了两次错误
- 2 回答
- 0 关注
- 106 浏览
添加回答
举报