我Set在 go 中創建了一個自定義數據類型,我用它來定義一對多關系。例如在我的架構中,我有以下結構定義type Doctor struct { firstName string lastName string capabilities commons.Set }這capabilities是一組具有以下值的字符串chat, audio, video,通過此設置,我試圖將上述結構保留到MySQL使用GORM庫中,但是當我這樣做時,出現以下錯誤panic: invalid sql type Set (interface) for mysqlgoroutine 6 [running]:catalog/vendor/github.com/jinzhu/gorm.(*mysql).DataTypeOf(0xc00027e8a0, 0xc00024d680, 0x8, 0x8) /home/kumard/go/src/catalog/vendor/github.com/jinzhu/gorm/dialect_mysql.go:123 +0xce9catalog/vendor/github.com/jinzhu/gorm.(*Scope).createTable(0xc000169400, 0xc14e60)我知道我必須實現某些方法才能實現這一點,但我無法確定要在此處實現哪個方法/回調。
1 回答

慕姐4208626
TA貢獻1852條經驗 獲得超7個贊
您需要為自定義類型實現Scanner & Driver Valuer接口,然后數據庫驅動程序才能知道如何將數據存儲在數據庫中以及如何從數據庫中獲取數據。
func (data *CustomType) Value() (driver.Value, error) {
...
}
func (data *CustomType) Scan(value interface{}) error {
...
}
示例:假設 UserAccess 是map[interface{}]struct{}類型。
type UserAccess map[interface{}]struct{}
func (data *UserAccess) Value() (driver.Value, error) {
return data.ConvertJSONToString(), nil
}
func (data *UserAccess) Scan(value interface{}) error {
*data = data.ConvertStringToJson(valueString)
}
這里用于將自定義數據類型值轉換為數據庫兼容類型,如 json-string ConvertStringToJson。ConvertJSONToString
- 1 回答
- 0 關注
- 209 瀏覽
添加回答
舉報
0/150
提交
取消