首頁 > 後端開發 > Golang > 主體

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

Susan Sarandon
發布: 2024-11-24 00:53:09
原創
187 人瀏覽過

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

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

使用自訂Set 資料型別在GORM 定義一對多關係時,由於SQL 類型無效,您可能會遇到錯誤。為了克服這個問題,您需要為您的自訂類型實作 Scanner 和 Driver Valuer 介面。這將使資料庫驅動程式了解如何在資料庫中儲存和檢索資料。

Scanner 介面

Scanner 介面具有以下方法:

func (data *CustomType) Scan(value interface{}) error
登入後複製

此方法用於將資料庫中的值掃描到您的自訂類型中。您應該實作此方法以將資料庫值轉換為您的自訂類型。

Driver Valuer 介面

Driver Valuer 介面具有以下方法:

func (data *CustomType) Value() (driver.Value, error)
登入後複製

此方法用於將您的自訂類型轉換為資料庫值。您應該實作此方法,將自訂類型轉換為資料庫可以理解的格式。

範例

讓我們考慮一個自訂類型UserAccess,它是一個映射[ 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)
}
登入後複製

在此範例中,ConvertStringToJson 和ConvertJSONToString 是在UserAccess 和資料庫相容格式(如JSON字串)之間進行轉換的輔助函數。

透過實作這些接口,您可以通知資料庫驅動程式如何處理您的自訂資料類型,從而允許您將其保留在您的資料庫中資料庫。

以上是如何使用 Golang 在 GORM 中保留自訂設定的資料類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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