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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 go 中結(jié)合 row.Scan 和 rows.Scan 接口?

在 go 中結(jié)合 row.Scan 和 rows.Scan 接口?

Go
有只小跳蛙 2021-07-14 15:09:23
我對(duì) Go 中的特定表有兩個(gè)查詢 - 一個(gè)用于檢索單個(gè)項(xiàng)目,另一個(gè)用于返回列表。第一個(gè)使用sql.DB.QueryRow是因?yàn)樗恍枰獧z索一行,第二個(gè)用于sql.DB.Query返回幾個(gè)不同的結(jié)果。問(wèn)題是序列化需要一些工作,我想通過(guò)使用從數(shù)據(jù)庫(kù)行掃描并將其讀入 Go 類(lèi)型的單一方法來(lái)完成它。我的代碼現(xiàn)在看起來(lái)像:// Some type which varies considerably from its DB representation, and takes some effort to serialize.type Foo struct {    Baz *Baz    Board [8][8]int}// Get one foo by its idfunc GetFoo(id int) {    row := db.QueryRow("select * from foo where id = ?", id)    // Work that's duplicated from below...     var foo Foo    row.Scan(&foo.blah, &foo.etc)    // Do more work to serialize the type...}// Get all of the fooesfunc GetFooes() {    rows, err := db.Query("select * from foo")    for rows.Next() {        // Work that's duplicated from above...        var foo Foo        rows.Scan(&foo.blah, &foo.etc)        // Do more work to serialize the type...    }}然而,事實(shí)證明將 row.Scan 和 rows.Scan 結(jié)合起來(lái)有點(diǎn)棘手。我以為我可以使用類(lèi)似的東西:func serializeFoo(scanner sql.Scanner) (*Foo, error) {}盡管 sql.Scanner 需要單個(gè)(value interface{})而不是(...value interface{}).這里有什么建議嗎?另一種解決方案是將單個(gè)QueryRow調(diào)用轉(zhuǎn)換為db.Query.
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 1285 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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