使用GORM Golang 保留自訂Set 資料類型
提供的程式碼範例說明了使用GORM 程式庫保留自訂Set 資料類型的挑戰在戈蘭。自訂類型是線程不安全的,表示一組字串。當嘗試使用 GORM 將包含此 Set 類型的結構體持久化到 MySQL 時,會遇到錯誤,指示 Set 類型對於 MySQL 無效。
要解決此問題,需要在自訂中實作某些方法設定類型以啟用資料庫互動。這些方法包括:
透過實作這些方法,GORM函式庫可以在資料持久化期間有效地處理自訂Set類型。以下是如何為提供的threadUnsafeSet 實作這些方法的範例:
type threadUnsafeSet map[interface{}]struct{} func (set *threadUnsafeSet) Value() (driver.Value, error) { return json.Marshal(set), nil } func (set *threadUnsafeSet) Scan(value interface{}) error { switch value := value.(type) { case []byte: return json.Unmarshal(value, set) } return errors.New("unrecognized value type") }
請注意,Value() 方法將threadUnsafeSet 轉換為JSON 編碼的字串,而Scan() 方法則解組JSON字串返回threadUnsafeSet。
有了這些方法,自訂 Set 資料型別就可以有效地與 GORM 一起使用來實現資料持久化。根據所使用資料庫的具體要求來實作 Value() 和 Scan() 方法非常重要。
以上是如何在 Golang 中使用 GORM 保留自訂設定資料類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!