首頁 > 後端開發 > Golang > 如何在 Golang 中使用 GORM 保留自訂設定資料類型?

如何在 Golang 中使用 GORM 保留自訂設定資料類型?

DDD
發布: 2024-11-19 09:18:02
原創
370 人瀏覽過

How to Persist Custom Set Data Types with GORM in Golang?

使用GORM Golang 保留自訂Set 資料類型

提供的程式碼範例說明了使用GORM 程式庫保留自訂Set 資料類型的挑戰在戈蘭。自訂類型是線程不安全的,表示一組字串。當嘗試使用 GORM 將包含此 Set 類型的結構體持久化到 MySQL 時,會遇到錯誤,指示 Set 類型對於 MySQL 無效。

要解決此問題,需要在自訂中實作某些方法設定類型以啟用資料庫互動。這些方法包括:

  • Value(): 將 Set 類型轉換為資料庫相容的值,例如 JSON 編碼的字串。
  • Scan():從資料庫擷取的值填入Set類型。

透過實作這些方法,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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板