리플렉션을 사용하여 Variadic Scan 함수 호출
리플렉션을 사용하여 Rows.Scan() 함수를 호출하려면 리플렉션의 힘을 활용할 수 있습니다. 함수에 가변 개수의 포인터를 전달합니다. 이는 데이터베이스 쿼리 결과의 값으로 조각을 채우려는 경우 특히 유용합니다.
구현 단계
샘플 코드
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]) } }
이 코드는 조각은 리플렉션을 사용하여 가변 개수의 포인터로 Rows.Scan() 함수를 호출하는 방법을 보여줍니다. 쿼리 결과에서 열 이름을 동적으로 검색하고 데이터 포인트와 포인터를 저장할 조각을 만듭니다. 리플렉션을 사용하여 주소 조각을 얻으면 이를 행으로 전달할 수 있습니다. 그에 따라 데이터 포인트를 스캔하고 채울 수 있습니다.
위 내용은 Go에서 Reflection을 사용하여 Variadic `Rows.Scan()` 함수를 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!