Maison >développement back-end >Golang >Comment utiliser correctement les paramètres variadiques avec « Exec » de Gorm pour les insertions en masse dans Go ?

Comment utiliser correctement les paramètres variadiques avec « Exec » de Gorm pour les insertions en masse dans Go ?

DDD
DDDoriginal
2024-11-25 20:26:11178parcourir

How to Correctly Use Variadic Parameters with Gorm's `Exec` for Bulk Inserts in Go?

Utilisation de paramètres variadiques pour rejoindre l'interface de tableau dans Golang

Lors de votre tentative d'exécution d'insertions groupées à l'aide de Gorm, vous avez rencontré une erreur due à un inadéquation entre le nombre de colonnes et les valeurs fournies. Ce problème provient d'un formatage incorrect de votre requête lors de l'utilisation d'une interface tableau.

Solution :

Pour résoudre ce problème, vous devez utiliser le "..." opérateur lors du passage d’éléments de la tranche à la fonction avec des paramètres variadiques. Cela demandera au compilateur de transmettre chaque élément individuellement au lieu de transmettre la valeur de la tranche comme argument unique.

tx.Exec(sqlStr, vals...)

Explication :

Le Tx.Exec() la fonction a la signature func (tx *Tx) Exec(query string, args ...interface{}) (Résultat, erreur). Cela signifie que vous pouvez transmettre un nombre variable d'arguments comme deuxième paramètre, désigné par args. En utilisant l'opérateur "...", vous demandez au compilateur d'étendre la tranche vals en arguments individuels.

Cela entraînera l'exécution de la requête suivante :

INSERT INTO city(code, name) VALUES ('XX1', 'Jakarta'),('XX2', 'Bandung')

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!

Déclaration:
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