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

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

抽象 PSQL 寫查詢

抽象 PSQL 寫查詢

Go
慕碼人8056858 2023-03-29 15:42:41
我有一個(gè)典型的函數(shù),它從前端接收一個(gè) post 請(qǐng)求并將數(shù)據(jù)解碼為一個(gè)結(jié)構(gòu),以便將其放入 psql 數(shù)據(jù)庫中。你可以看到下面的代碼。我的問題是我希望能夠抽象這個(gè)函數(shù),這樣我就可以給它任何數(shù)量的任何類型的變量,這樣對(duì)于每個(gè)請(qǐng)求我都不必有一個(gè)單獨(dú)的寫處理程序。這看起來很難,因?yàn)槲覍⒉坏貌灰阅撤N方式傳遞一種抽象的方式來var profitReq profitReq為任何結(jié)構(gòu)工作。如果 golang 有某種 eval string 方法,我會(huì)知道該怎么做,但如果我錯(cuò)了,有人會(huì)糾正我,但我認(rèn)為它不會(huì)。我需要更改的另一個(gè)地方是 QueryRow - 我必須能夠?qū)⑺鼈鬟f給可變數(shù)量的變量。我可以很容易地構(gòu)造字符串,但我不確定如何將變量附加到該 QueryRow。例如,如果我將所有變量附加到一個(gè)數(shù)組,我不能將該數(shù)組傳遞到 QueryRow,因?yàn)樗皇沁@樣構(gòu)造的。同樣,這里某種 eval 語句會(huì)有所幫助。我是golang的新手,但是我看到了很多與接口相關(guān)的很酷的東西,我承認(rèn)我不是很了解。有沒有辦法在這里使用一個(gè)有幫助的界面?感謝任何能提供幫助的人!func Write_profit_table(profitWriteChannel chan string, profitType string, req *http.Request) {    var profitReq profitReq;    err := json.NewDecoder(req.Body).Decode(&profitReq);    if err!=nil{        log.Panic(err)    }    NotInDB, _ := Search_userinfo_table(profitReq.Email)    if NotInDB == false {        var lastInsertId int        err2 := db.QueryRow("INSERT INTO profit(email, type, dateArray, amount, interest, compounded, recurring, name, description, profitFrom)                 VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning uid;",                 profitReq.Email, profitReq.Type, pq.Array(profitReq.DateArray), profitReq.Profit, profitReq.Interest,                 profitReq.Compounded, profitReq.Recurring, profitReq.Name, profitReq.Description, profitReq.ProfitFrom).Scan(&lastInsertId);        if err2!=nil{            log.Panic(err2)        }    }    profitWriteChannel<-"finished writing to profit"}
查看完整描述

1 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

您正在尋找的功能稱為泛型。
Go 1.x 不支持泛型
對(duì)我們來說幸運(yùn)的是,有一個(gè)針對(duì) Go 2 的提案(稱為 Contracts)

在那之前你能做什么?

  1. 復(fù)制您的代碼(可能是您現(xiàn)在正在做的)

  2. 使用接口
    如果您知道此方法將始終通過電子郵件進(jìn)行查詢,則可以為此目的創(chuàng)建簡(jiǎn)單的接口:type Emailer interface { Email() string }

  3. 使用空接口 (?interface{}) 和反射來確定你有哪些列。

  4. 編寫自己的生成器。有點(diǎn)像 (1),但您不必自己執(zhí)行此操作。


查看完整回答
反對(duì) 回復(fù) 2023-03-29
  • 1 回答
  • 0 關(guān)注
  • 107 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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