從數據庫掃描時,使用如下帶有指針的結構而不是不帶指針的結構有什么好處? type User struct { ID *UserID `json:"id,omitempty"` Email *string `json:"email"` Username *string `json:"username"` PasswordHash *[]byte `json:"password_hash"` CreatedAt *time.Time `json:"created_at"` }
3 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
如果您嘗試將具有空 DB 值的行掃描為非指針類型,則行掃描操作將導致錯誤。
最佳實踐是檢查數據庫表的架構。如果列不能有空值,請使用非指針。如果可能為空(無論您認為可能性有多小),請使用指針。
如果您發現指針使用起來很乏味(即樣板 nil 檢查),請使用sql.NullString作為列字段。如果在行掃描期間遇到 NULL,則NullString
值將默認為空字符串。
Go 1.13 還添加了NullTime
?etc. 來處理其他 Nullable 列類型。

隔江千里
TA貢獻1906條經驗 獲得超10個贊
如果需要區分零值和空值,則在掃描解組時使用帶有指針的結構是必要的。當相應值為 null 時, string/int/struct 將失?。ɑ蛟诮饨M時初始化為零值),而指向 string/int/struct 的指針將設置為 nil。

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
我建議使用Github 上 README 文件末尾pgx
提到的內容:lib/pg
對于需要新功能或可靠解決報告的錯誤的用戶,我們建議使用正在積極開發的 pgx。
然后,您可以使用自定義 pgtype而不是 Go 內置的。
- 3 回答
- 0 關注
- 207 瀏覽
添加回答
舉報
0/150
提交
取消