亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Postgres 掃描到帶有指針的結構體

從 Postgres 掃描到帶有指針的結構體

Go
富國滬深 2023-08-07 18:49:33
從數據庫掃描時,使用如下帶有指針的結構而不是不帶指針的結構有什么好處?  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 列類型。


查看完整回答
反對 回復 2023-08-07
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

如果需要區分零值和空值,則在掃描解組時使用帶有指針的結構是必要的。當相應值為 null 時, string/int/struct 將失?。ɑ蛟诮饨M時初始化為零值),而指向 string/int/struct 的指針將設置為 nil。



查看完整回答
反對 回復 2023-08-07
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

我建議使用Github 上 README 文件末尾pgx提到的內容:lib/pg

對于需要新功能或可靠解決報告的錯誤的用戶,我們建議使用正在積極開發的 pgx。

然后,您可以使用自定義 pgtype而不是 Go 內置的。


查看完整回答
反對 回復 2023-08-07
  • 3 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號