Go에서 "SELECT *" 열을 []문자열로 읽기
데이터베이스 세계에서는 "SELECT를 사용하여 테이블에서 데이터를 가져옵니다. " 쿼리는 일반적인 관행이지만 프로그래밍 세계에서 이러한 데이터를 수동으로 작업하는 것은 번거로울 수 있습니다. 이 글은 강력한 Go 표준 라이브러리를 활용하여 Go에서 "SELECT " 쿼리 결과를 []문자열 슬라이스로 읽는 프로세스를 단순화하는 것을 목표로 합니다.
알 수 없는 열 개수가 있는 테이블을 처리하는 경우 및 데이터 유형의 문제는 데이터를 구조화된 형식으로 캡처하는 데 있습니다. Rows에서 제공하는 Scan 메서드를 사용하면 특정 데이터 유형을 사전 정의된 변수에 채울 수 있지만 []문자열을 직접 읽는 방법은 제공되지 않습니다.
이를 극복하기 위해 우리는 기술을 사용합니다. 이는 []인터페이스{} 슬라이스를 생성합니다. 여기서 각 요소는 []문자열 슬라이스의 문자열에 대한 포인터입니다. 이 브리징 단계를 통해 Scan 메서드가 인터페이스 슬라이스를 채울 수 있으며, 원하는 []문자열로 쉽게 변환할 수 있습니다.
다음은 질문에 제공된 예제 코드의 수정된 버전입니다.
func dumpTable(rows *sql.Rows, out io.Writer) error { colNames, err := rows.Columns() if err != nil { return err } writer := csv.NewWriter(out) writer.Comma = '\t' readCols := make([]interface{}, len(colNames)) writeCols := make([]string, len(colNames)) for i, _ := range writeCols { readCols[i] = &writeCols[i] } for rows.Next() { err := rows.Scan(readCols...) if err != nil { return err } writer.Write(writeCols) } if err = rows.Err(); err != nil { return err } writer.Flush() return nil }
이 솔루션은 Scan 메서드와 []문자열 사이의 간격을 원활하게 연결하여 "SELECT *" 쿼리 결과를 구조화되고 사용 가능한 형식으로 저장할 수 있게 해줍니다.
위 내용은 Go에서 'SELECT *' 열을 []string 슬라이스로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!