Go에서는 다른 언어의 공통 데이터 구조인 공용체는 본질적으로 없습니다. 그러나 XML의 과도한 선택 유형 사용을 처리하는 것과 같은 상황에서는 구현이 필요합니다.
제공된 코드 조각에서 볼 수 있듯이 Go에서 유니온을 시뮬레이션하려고 합니다. 상당한 코드 중복성을 도입합니다. 여러 조건자 및 getter와 함께 각 유형에 대한 별도의 컨테이너 구조체 및 생성자가 필요하므로 구현이 부풀려집니다.
Union 처리를 단순화하려면 생성을 고려하세요. 공용체 유형의 객체에 대한 마커 역할을 하는 Misc라는 인터페이스:
type Misc interface { ImplementsMisc() } type Comment Chars func (c Comment) ImplementsMisc() {} type ProcessingInstruction func (p ProcessingInstruction) ImplementsMisc() {}
이 인터페이스가 있으면 함수는 다음과 같은 작업을 수행할 수 있습니다. 특정 기본 유형에 대해 걱정하지 않고 기타 객체에만 맞춤화할 수 있습니다. 이러한 함수에 전달된 모든 개체가 기타를 구현해야 함을 보장함으로써 유형 안전성이 달성됩니다.
Go에는 기본 제공 Union 지원이 없지만 중첩 구조를 통해 해당 동작을 에뮬레이션하면 Union 구현이 가능합니다. 그리고 인터페이스. 이 접근 방식에 내재된 코드 중복성은 공용체 개체에 대한 표시로 인터페이스를 사용하여 완화할 수 있습니다.
위 내용은 Go에서 Type-Safe Union을 어떻게 효율적으로 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!