Golang 類型斷言:為自訂型別實作Valuer 和Scanner
在Go 中使用自訂型別(例如基於字串的型別)時,可能需要實作Valuer 和Scanner 介面來與資料庫驅動程式互動。這使得自訂類型能夠與資料庫值進行序列化和反序列化。
在提供的程式碼中,嘗試實作 Role 型別及其關聯的 Valuer 和 Scanner 方法。但遇到了錯誤:
cannot convert value.(string) (type string) to type *Role
要修正此錯誤,可以將Scan 方法修改如下:
func (r *Role) Scan(value interface{}) error { *r = Role(value.(string)) return nil }
此修改可確保從資料庫檢索的值正確指派給角色指標。此外,Value 方法應具有以下簽章:
func (r Role) Value() (driver.Value, error) { return string(r), nil }
請注意,此實作不會處理或產生 NULL 值。
透過遵循這些建議,您可以成功地為自訂類型實現 Valuer 和 Scanner 接口,並實現與資料庫驅動程式的無縫互動.
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3