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

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

從 Windows 交叉編譯到 Linux 時出現(xiàn)錯誤?

從 Windows 交叉編譯到 Linux 時出現(xiàn)錯誤?

Go
ibeautiful 2023-06-01 16:29:07
將我的代碼從 Win10 交叉編譯到 Linux 時,以下代碼停止使用 rows.next    executed rows.Next()    rows, err := DB.Query("SELECT * FROM `machines`")    erh.Check(err)    newUsers := make(map[string]User, count)    defer erh.Check(rows.Close())        for rows.Next() {        //tu is temp user        tu := User{}        err := rows.Scan(&tu.Id, &tu.Name, &tu.Apikey, &tu.Ip, &tu.Machine, &tu.State, &tu.DbAvailable)        erh.Check(err)        log.Println(tu)        newUsers[tu.Apikey] = tu    }當(dāng)我將延遲放在 rows.Next 下時,執(zhí)行了 rows.next 代碼rows, err := DB.Query("SELECT * FROM `machines`")erh.Check(err)newUsers := make(map[string]User, count)for rows.Next() {    //tu is temp user    tu := User{}    err := rows.Scan(&tu.Id, &tu.Name, &tu.Apikey, &tu.Ip, &tu.Machine, &tu.State, &tu.DbAvailable)    erh.Check(err)    log.Println(tu)    newUsers[tu.Apikey] = tu}defer erh.Check(rows.Close())有人可以確認(rèn)這是一個錯誤,還是我在這里遺漏了什么?
查看完整描述

1 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊

我不確定這在 Linux 上如何工作,它不應(yīng)該。這一行:

????defer?erh.Check(rows.Close())

rows.Close()?立即執(zhí)行,保留返回值,然后延遲對 的調(diào)用erh.Check。這就是 defer 的工作原理——立即評估參數(shù)。從文檔:

每次執(zhí)行“defer”語句時,調(diào)用的函數(shù)值和參數(shù)都會像往常一樣計算并重新保存,但不會調(diào)用實際函數(shù)。

如果你想使用這樣的構(gòu)造,它必須在一個閉包中,比如:

defer?func()?{
????erh.Check(rows.Close())
}()

所以在 的時候沒有要評估的參數(shù)defer


查看完整回答
反對 回復(fù) 2023-06-01
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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