외부 패키지로 작업할 때 공통 멤버가 포함된 구조체에서 작동하는 일반 함수를 정의하는 것이 어려울 수 있습니다. 이 문서에서는 두 가지 서로 다른 Firebase 메시지 구조인 Message 및 MulticastMessage의 공유 필드를 수정하기 위해 일반 함수를 만들려고 시도한 문제를 살펴봅니다.
Android 구성 필드와 유사하지만 이러한 구조체에는 명시적인 관계가 없으며 유형 매개변수를 사용하여 공통 속성에 직접 액세스하려고 시도하면 오류가 발생했습니다. 그 이유는 링크된 스레드에 설명된 대로 Go 1.18이 아직 공통 필드 또는 유형 매개변수의 메소드에 대한 액세스를 지원하지 않기 때문입니다.
이 문제를 해결하기 위해 몇 가지 솔루션이 있습니다. 제안:
관련 유형 수가 제한되어 있는 경우 유형 스위치 문을 사용하여 공유 필드에 액세스할 수 있습니다.
이 방법에는 일반 함수에서 사용하려는 추가 메서드가 포함된 래퍼 구조체를 생성하는 작업이 포함됩니다.
그런 다음 일반 함수는 다음 일반 메서드에 액세스할 수 있습니다.
구조체 수가 많은 경우 반사를 사용하여 공유 필드에 동적으로 액세스할 수 있습니다.
이러한 솔루션에는 제한 사항:
위 내용은 Go에서 제네릭을 사용하여 다양한 구조체의 공유 필드를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!