Maison >développement back-end >Golang >Comment puis-je utiliser Reflection pour appeler la fonction variadique « Rows.Scan() » dans Go ?
Appel de la fonction d'analyse variadique à l'aide de la réflexion
Pour appeler la fonction Rows.Scan() à l'aide de la réflexion, vous pouvez exploiter la puissance de la réflexion pour passer un nombre variable de pointeurs vers la fonction. Ceci est particulièrement utile lorsque vous souhaitez remplir une tranche avec les valeurs d'un résultat de requête de base de données.
Étapes à mettre en œuvre
Exemple de code
package main import ( "fmt" "reflect" "database/sql" ) func main() { // Open a database connection. db, _ := sql.Open("postgres", "user=postgres dbname=database password=password") // Query the database. rows, _ := db.Query("SELECT * FROM table_name") // Get the column names. columns, _ := rows.Columns() columnCount := len(columns) // Create slices to store data points and pointers. data := make([]interface{}, columnCount) dataPtrs := make([]interface{}, columnCount) // Obtain a slice of pointers. pointers := reflect.ValueOf(dataPtrs) // Obtain a slice of addresses. addresses := pointers.Addr() // Fill the data points by calling Rows.Scan(). rows.Scan(addresses...) // Print the data points. for i := 0; i < columnCount; i++ { fmt.Println(columns[i], data[i]) } }
Cet extrait de code montre comment utilisez la réflexion pour appeler la fonction Rows.Scan() avec un nombre variable de pointeurs. Il récupère dynamiquement les noms de colonnes du résultat de la requête et crée des tranches pour stocker les points de données et les pointeurs. En utilisant la réflexion pour obtenir la tranche d'adresses, vous pouvez la transmettre aux lignes. Scannez et remplissez les points de données en conséquence.
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!