3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您嘗試將具有空 DB 值的行掃描為非指針類型,則行掃描操作將導(dǎo)致錯(cuò)誤。
最佳實(shí)踐是檢查數(shù)據(jù)庫表的架構(gòu)。如果列不能有空值,請使用非指針。如果可能為空(無論您認(rèn)為可能性有多?。?,請使用指針。
如果您發(fā)現(xiàn)指針使用起來很乏味(即樣板 nil 檢查),請使用sql.NullString作為列字段。如果在行掃描期間遇到 NULL,則NullString
值將默認(rèn)為空字符串。
Go 1.13 還添加了NullTime
?etc. 來處理其他 Nullable 列類型。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果需要區(qū)分零值和空值,則在掃描解組時(shí)使用帶有指針的結(jié)構(gòu)是必要的。當(dāng)相應(yīng)值為 null 時(shí), string/int/struct 將失?。ɑ蛟诮饨M時(shí)初始化為零值),而指向 string/int/struct 的指針將設(shè)置為 nil。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
我建議使用Github 上 README 文件末尾pgx
提到的內(nèi)容:lib/pg
對于需要新功能或可靠解決報(bào)告的錯(cuò)誤的用戶,我們建議使用正在積極開發(fā)的 pgx。
然后,您可以使用自定義 pgtype而不是 Go 內(nèi)置的。
- 3 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)