여러 유형의 트랜잭션 및 공유 기본 유형과 관련된 프로그래밍 문제를 해결하려고 시도하는 동안 다형성을 구현하는 데 어려움을 겪을 수 있습니다. 다형성의 개념을 자세히 알아보고 특정 문제를 해결해 보겠습니다.
Go에서는 객체 지향 언어와 달리 다형성이 인터페이스로 제한됩니다. 인터페이스는 다양한 유형으로 구현할 수 있는 메서드 세트를 정의합니다.
귀하의 경우에는 "기본" 유형인 BaseTX와 두 개의 하위 유형인 RewardTX 및 AllowanceTX를 생성하려고 했습니다. 이러한 하위 유형에는 기본 유형에 비해 추가 필드가 있습니다.
TXapi 인터페이스에서 작동하는 logicAndSaveTX 함수를 정의했기 때문에 문제가 발생했습니다. 그러나 이 함수의 구현은 BaseTX 유형에서 작동하므로 하위 유형에서 추가 필드가 제외됩니다.
해결책은 "기본" 유형의 개념을 제거하는 데 있습니다. 대신 메타데이터를 트랜잭션 간에 공유되는 공통 필드로 생각하십시오. 메타데이터를 별도의 유형으로 선언하고 이를 RewardTX 및 AllowanceTX 유형에 포함할 수 있습니다. 그런 다음 각 유형은 특정 필드를 수정하는 자체 logicAndSaveTX 메서드를 가질 수 있습니다.
업데이트된 예는 다음과 같습니다.
type TXapi interface { logicAndSaveTX() } type Metadata struct { Field1 string Field2 string } type RewardTX struct { Metadata } func (tx RewardTX) logicAndSaveTX() { // Modify TX-specific fields tx.Field1 = "Reward Field 1" tx.Field2 = "Reward Field 2" // Logic and save metadata shared with AllowanceTX } type AllowanceTX struct { Metadata AddField string } func (tx AllowanceTX) logicAndSaveTX() { // Modify TX-specific fields tx.Field1 = "Allowance Field 1" tx.Field2 = "Allowance Field 2" tx.AddField = "Allowance Additional Field" // Logic and save metadata shared with RewardTX }
구성을 수용하고 메서드에 대한 명확한 범위를 정의하면 다음을 통해 다형성을 효과적으로 구현할 수 있습니다. Go의 인터페이스.
위 내용은 기본 유형 없이 Go에서 다형성을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!