Beibehalten eines benutzerdefinierten Satzdatentyps mit GORM Go
Der bereitgestellte Code definiert einen benutzerdefinierten Satzdatentyp threadUnsafeSet und die dazugehörigen Methoden. Um diesen Datentyp mithilfe der GORM-Bibliothek für MySQL beizubehalten, muss eine Implementierung der Scanner- und Driver Valuer-Schnittstellen vorhanden sein.
Scanner- und Driver Valuer-Schnittstellenimplementierung
Die Scanner-Schnittstelle wird zum Scannen eines Datenbankwerts in einen Go-Wert verwendet, während die Driver Valuer-Schnittstelle zum Konvertieren eines Go-Werts in einen Datenbanktreiberwert verwendet wird. Für den ThreadUnsafeSet-Typ bedeutet dies die Implementierung von Methoden zum Konvertieren des benutzerdefinierten Satzes in ein datenbankkompatibles Format und umgekehrt.
Eine Beispielimplementierung könnte so aussehen:
func (data *threadUnsafeSet) Value() (driver.Value, error) { return data.ConvertJSONToString(), nil } func (data *threadUnsafeSet) Scan(value interface{}) error { *data = data.ConvertStringToJson(valueString) }
In diesem Beispiel , konvertieren die Methoden ConvertJSONToString und ConvertStringToJson den benutzerdefinierten Satz in und aus einem JSON-String, der dann in einer Datenbank gespeichert werden kann.
Durch die Implementierung dieser Schnittstellen kann GORM nun verstehen, wie der Typ threadUnsafeSet gespeichert und daraus abgerufen wird die Datenbank.
Hinweis: Sie sollten die Dummy-Methodenaufrufe ConvertJSONToString und ConvertStringToJson durch tatsächliche Implementierungen ersetzen, die Ihren spezifischen Datentypkonvertierungsanforderungen entsprechen.
Das obige ist der detaillierte Inhalt vonWie behalte ich einen benutzerdefinierten Go-Set-Datentyp mit GORM und MySQL bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!