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 をアンマーシャリングすることに注意してください。
これらのメソッドを適切に配置すると、データの永続化のためにカスタム Set データ型を GORM で効果的に使用できます。使用するデータベースの特定の要件に従って、Value() メソッドと Scan() メソッドを実装することが重要です。
以上がGolang で GORM を使用してカスタム セット データ型を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。