Dans le package gosqlite, la méthode Exec accepte un nombre variable d'arguments représentés par le paramètre ...interface{}. Bien que des paramètres individuels puissent être transmis directement, le passage d'une tranche de chaîne ([]string) génère une erreur de compilation. Pour résoudre ce problème, explorons des approches alternatives.
Création d'une tranche d'interface vide :
Une solution de contournement consiste à créer une tranche d'interface vide et à attribuer des valeurs à partir de la tranche de chaîne d'origine. de manière itérative. Bien que cette technique résolve le problème de compilation, elle nécessite une copie temporelle linéaire avec une surcharge importante.
Évitement de la copie temporelle linéaire :
Pour éliminer les coûts cachés et améliorer l'efficacité , envisagez de transmettre une plage contenant l'index et la valeur de la tranche à la méthode Exec. Cela permet une conversion directe des arguments sans avoir besoin d'une copie.
Solution générique utilisant la réflexion :
En utilisant la réflexion, une solution plus générique peut être mise en œuvre. Cela implique de réfléchir sur la tranche d'origine en utilisant Reflect.ValueOf(values) et d'accéder à chaque élément via ValuesVal.Index(i).Interface(). Bien que la réflexion entraîne une surcharge d'exécution, elle offre une flexibilité pour convertir différents types de tranches en tranches d'interface vides.
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!