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

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

WBOY
WBOY앞으로
2024-02-06 08:25:111031검색

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

질문 내용

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

으아아아

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

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

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

으아아아

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

으아아아

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

으아아아

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

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


정답


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

으아아아

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

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

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

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제