SQL 스캔을 위해 리플렉션을 사용하여 Variadic 함수 호출
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!