저는 https://github.com/lib/pq를 사용하여 postgres에서 데이터를 가져옵니다. 데이터를 추출하기 위해 protobuf 타임스탬프 필드 https://pkg.go.dev/google.golang.org/protobuf/types/known/timestamppb#timestamp를 포함하는 타사 구조를 사용합니다. 그래서 따라서 문제는 time.time에서 timestamppb.timestamp
까지 스캔할 작업을 얻는 것입니다. 으아아아sql.scanner 인터페이스를 구현한 구조체를 스캔해 봅니다. 그것은 간단합니다. 방금 다음과 같이 스캔 기능을 구현했습니다.
으아아아하지만 timestampppb.timestamp는 네이티브 유형이 아니기 때문에 작동하지 않습니다. 그런 다음 로컬 유형을 정의하고 동일한 작업을 수행해 보았습니다
으아아아하지만 이 트릭은 작동하지 않았습니다. 또한 "'scan'이 값으로 잠금을 통과합니다. 'timestamppb' 유형에 'protoimpl.messagestate'에 'sync.mutex', 즉 'sync.locker'가 포함되어 있습니다."라는 경고가 표시됩니다. timestampppb에 대한 포인터를 지정하면 작동하지 않습니다
으아아아그래서 sql.scanner의 timestampppb.timestamp 인스턴스를 만드는 방법을 알고 싶습니다. 가능합니까?
업데이트 1 내가 시도한 작은 예
으아아아teststruct와 함께 사례를 사용할 수 있는지 알고 싶습니다.
pq
库不支持 *timestamppb.timestamp
은 타임스탬프 유형입니다. 지원되는 날짜 유형에 대한 설명서를 참조하세요.
스캔할 때 다양한 유형이 필요합니다.
저는 보통 함수에서 도우미 유형을 사용하여 이 작업을 수행합니다. 예:
으아아아위 내용은 golang의 기본이 아닌 구조에 인터페이스를 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!