Maison > développement back-end > Golang > Comment conserver les types de données personnalisés avec GORM dans Golang ?

Comment conserver les types de données personnalisés avec GORM dans Golang ?

DDD
Libérer: 2024-11-19 09:18:02
original
376 Les gens l'ont consulté

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

Persistance du type de données d'ensemble personnalisé à l'aide de GORM Golang

L'exemple de code fourni illustre le défi de la persistance d'un type de données d'ensemble personnalisé à l'aide de la bibliothèque GORM à Golang. Le type personnalisé est thread-unsafe et représente un ensemble de chaînes. Lorsque vous tentez de conserver une structure contenant ce type Set dans MySQL à l'aide de GORM, une erreur apparaît indiquant que le type Set n'est pas valide pour MySQL.

Pour résoudre ce problème, il est nécessaire d'implémenter certaines méthodes dans le fichier personnalisé. Définissez le type pour activer l’interaction avec la base de données. Ces méthodes incluent :

  • Value() : Convertit le type Set en une valeur compatible avec la base de données, telle qu'une chaîne codée en JSON.
  • Scan() : Remplit le type Set à partir d'une valeur récupérée dans la base de données.

Par en implémentant ces méthodes, la bibliothèque GORM peut gérer efficacement le type Set personnalisé pendant la persistance des données. Voici un exemple de la façon dont ces méthodes peuvent être implémentées pour le threadUnsafeSet fourni :

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")
}
Copier après la connexion

Notez que la méthode Value() convertit le threadUnsafeSet en une chaîne codée en JSON, tandis que la méthode Scan() désorganise le JSON. chaîne dans le threadUnsafeSet.

Avec ces méthodes en place, le type de données Set personnalisé peut être utilisé efficacement avec GORM pour la persistance des données. Il est important d'implémenter les méthodes Value() et Scan() en fonction des exigences spécifiques de la base de données utilisée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal