1 回答

TA貢獻(xiàn)1840條經(jīng)驗 獲得超5個贊
確切的答案很大程度上取決于您的數(shù)據(jù)庫架構(gòu)。我將嘗試給出一個通用的答案。你可以走兩種方式(據(jù)我所知):
使用在這方面做很多事情的庫,比如sqlx或gorm。這些庫將查看結(jié)構(gòu)和標(biāo)簽中導(dǎo)出的字段以自動填充它們。
使用標(biāo)準(zhǔn)的sql庫,自己做所有事情。在這種情況下,您將需要使用該
Rows.Scan
函數(shù)自己填充結(jié)構(gòu)。
無論如何,您的StreamST
結(jié)構(gòu)包含一個映射,它是一個集合,所以我假設(shè)您要連接兩個表。在 GORM 中,您可以指定關(guān)系,庫會考慮到這一點。雖然我不確定這是否也僅適用于切片或映射,因為 GORM 不知道將結(jié)構(gòu)的哪個字段用作映射的索引。
使用標(biāo)準(zhǔn)庫時,返回的行與 SQL 查詢的結(jié)果完全相同,因此左表的字段將重復(fù),因此您需要編寫自己的邏輯來將此字段列表轉(zhuǎn)換為正確的結(jié)構(gòu)。
最后,您有許多自定義類型,例如av.CodecData
. 如果這些對應(yīng)于單個字段但采用自定義格式,您可以通過讓這些結(jié)構(gòu)實現(xiàn)sql.Scanner和driver.Valuer接口來實現(xiàn)自定義編碼/解碼。
- 1 回答
- 0 關(guān)注
- 134 瀏覽
添加回答
舉報