第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何聲明一個SQL行,if else語句未聲明問題

如何聲明一個SQL行,if else語句未聲明問題

Go
慕標(biāo)5832272 2023-07-26 17:15:56
我有一個像下面這樣的代碼。var sql stringif 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)}這會給我一個類似這樣的錯誤“未為行聲明變量,錯誤”...我嘗試聲明“var err error”,并在 if else 語句中,我使用 = 而不是 := 這樣的東西var err errorrows, err = pnt.switchConn("base", "read").Query(sql, start, end)但是,我仍然無法聲明行,因?yàn)槲視龅讲煌愋偷腻e誤。我嘗試將其聲明為字符串,但沒有成功。這是我第一次使用 golang,if else 的事情讓我很困難,為什么我不能在 if else 語句中使用 := 。正如您所看到的,我不能在 if else 語句之外使用 rows, err := ,因?yàn)閮烧叨加胁煌瑪?shù)量的參數(shù)。
查看完整描述

2 回答

?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個贊

由于變量的范圍,您面臨問題。在 Golang 中,:=在作用域內(nèi)創(chuàng)建一個新變量。

rows, err := pnt.ReadConn("testdb").Query(sql, start, end, start, end)

在塊中創(chuàng)建一個新的rowsanderr變量if,該變量在 if 塊之外無法訪問。

Go 中的簡寫聲明

修復(fù),

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)

}


查看完整回答
反對 回復(fù) 2023-07-26
?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個贊

在golang中“:=”意味著你聲明一個變量并為其分配一個值GO將自動檢測他的類型所以:示例 variable := 15 這是相同的 var variable int = 15

因此,當(dāng)您執(zhí)行此rows, err := pnt.switchConn("base", "read").Query(sql, start, end, start, end) } else {    sql =選擇代碼時, count(*) 從 code_table 中開始計數(shù),其中 start >= ?并結(jié)束 <= ? group by code    rows, err := pnt.switchConn("base", "read").Query(sql, start, end) }您聲明相同的變量行并犯了兩次錯誤


查看完整回答
反對 回復(fù) 2023-07-26
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號