php 편집기 Yuzai가 이 기사에서 데이터베이스/sql.Scanner 인터페이스를 구현하는 방법을 소개합니다. Go 언어에서 데이터베이스/sql 패키지는 관계형 데이터베이스를 운영하는 데 사용되는 핵심 패키지입니다. Scanner 인터페이스는 데이터베이스 쿼리 결과의 값을 Go 언어 변수로 스캔하는 데 사용됩니다. Scanner 인터페이스를 구현함으로써 데이터베이스 쿼리 결과의 값을 원하는 유형으로 변환하는 것을 사용자 정의할 수 있습니다. 이 기사에서는 독자가 Go 언어의 데이터베이스 작업을 더 잘 이해하고 적용할 수 있도록 Scanner 인터페이스를 구현하는 방법을 자세히 설명합니다.
database/sql.Scanner
인터페이스를 어떻게 구현하나요?
이 쿼리의 SELECT 절에는 3개의 필드가 있습니다.
id
smallint unsignedis_suspended
tinyint unsignedname
varchar database/sql
에서 3개 열의 데이터 유형은 다음과 같습니다.
int64
int64
[]uint8
이것은 []인터페이스{}
에서 작동하지만 각 열 유형을 []接口{}
,但希望将每个列类型直接实现到 database/sql.Scanner
인터페이스
하려고 노력했지만 제대로 작동하지 못했던 일들
유형
으아아아코드
cols := make([]interface{}, 3) ptr := make([]interface{}, 3) for i, _ := range cols { ptr[i] = &cols[i] } if err := rows.Scan(ptr...); err != nil { fmt.Println("err:", err) } // pair column data with column name res := map[string]any for i, name := range res_cols { res[name] = *ptr[i].(*any) fmt.Printf("Type: %T %s\n", res[name], name) }
주어진 유형의 값에 대한 포인터를 사용하여 초기화 ptr
하세요.
ptr
Slice는 위 스니펫에서 어떤 값도 제공하지 않습니다. 코드는 다음과 같이 단순화될 수 있습니다.
위 내용은 데이터베이스/sql.Scanner 인터페이스 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!