> 백엔드 개발 > Golang > 제네릭을 사용하여 인터페이스를 지정된 유형으로 변환하는 방법

제네릭을 사용하여 인터페이스를 지정된 유형으로 변환하는 방법

WBOY
풀어 주다: 2024-02-06 08:25:11
앞으로
1045명이 탐색했습니다.

제네릭을 사용하여 인터페이스를 지정된 유형으로 변환하는 방법

질문 내용

인터페이스 선언과 이를 구현하는 많은 구조체가 있습니다

으아아아

또한 포함됩니다 datac,d,e...

이거 넣을게요 datax 结构实例存储到 type dataslice []datainterface

이제 datax 을 얻고 싶다면 다음과 같이 할 수 있습니다.

으아아아

여기에는 중복된 코드가 많이 있습니다:

으아아아

그래서 제네릭을 사용하여 이 문제를 해결할 수 있다고 생각하고 다음 함수를 정의했습니다.

으아아아

하지만 오류가 발생했습니다: impossible 类型断言:'*t' 未实现 'datainterface

그래서 이것이 정말 불가능한 것인지 알고 싶습니다. 아니면 다른 방법으로 할 수 있나요?


정답


필요에 따라 다음 코드를 사용할 수 있어야 합니다.

으아아아

우선 코드를 단순화했습니다. dataadatab 结构。然后,我将指针接收器更改为值接收器,因为您不会更改传递给方法的实际实例的状态。由于此更改,getdatax 성공적으로 작동하고 유사한 구조 정보를 모두 얻을 수 있다는 점을 고려합니다.

이 방법으로 문제가 해결되었거나 다른 것이 필요한 경우 알려주세요. 감사합니다!

위 내용은 제네릭을 사용하여 인터페이스를 지정된 유형으로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿