Maison >développement back-end >Golang >Comment appeler dynamiquement Variadic Rows.Scan() à l'aide de Reflection in Go ?
Appel de fonctions variadiques avec Reflection pour SQL Scan
Lors de l'utilisation de la fonction Rows.Scan() pour les requêtes de base de données SQL, il devient nécessaire de utilisez la réflexion pour tenir compte du nombre variable de pointeurs qu'il accepte. Cela permet de remplir dynamiquement des tranches avec les données d'un résultat de requête.
Étapes pour analyser dynamiquement à l'aide de la réflexion
Pour appeler une fonction variadique telle que Rows.Scan() à l'aide de la réflexion , suivez ces étapes :
Exemple de code
L'extrait de code suivant montre comment analyser dynamiquement à l'aide de la réflexion :
package main import ( "fmt" _ "github.com/lib/pq" "database/sql" ) func main() { db, _ := sql.Open("postgres", "connection_string") rows, _ := db.Query("SELECT * FROM my_table") columns, _ := rows.Columns() count := len(columns) values := make([]interface{}, count) valuePtrs := make([]interface{}, count) for rows.Next() { for i := range columns { valuePtrs[i] = &values[i] } rows.Scan(valuePtrs...) for i, col := range columns { val := values[i] b, ok := val.([]byte) var v interface{} if ok { v = string(b) } else { v = val } fmt.Println(col, v) } } }
En implémentant cette méthode, vous pouvez remplir dynamiquement les tranches avec les résultats de la requête sans spécifier les types de données à l'avance.
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!