SQL スキャンのリフレクションを使用した可変個引数関数の呼び出し
SQL データベースのクエリに Rows.Scan() 関数を利用する場合、次のことが必要になります。リフレクションを使用して、受け入れるポインターの可変数を考慮します。これにより、クエリ結果からのデータをスライスに動的に取り込むことができます。
リフレクションを使用して動的にスキャンする手順
リフレクションを使用して Rows.Scan() のような可変引数関数を呼び出すには、次の手順に従います:
コード例
次のコード スニペットは、リフレクションを使用して動的にスキャンする方法を示しています。
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) } } }
このメソッドを実装すると、データ型を指定せずにスライスにクエリ結果を動的に設定できます。進んでください。
以上がGo でリフレクションを使用して Variadic Rows.Scan() を動的に呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。