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 關注
- 142 瀏覽
添加回答
舉報