Подскажите, можно ли в Go реализовать аналог следующего кода на PHP?
<?php
declare(strict_types=1)
interface ActivationRepository
{
public function tariffActivation(TariffActivationDto $dto): TariffActivationResponseDto;
}
class TariffActivationDto
{
public string $id = '';
}
final class TariffActivation2Dto extends TariffActivationDto
{
public string $code = '';
}
class TariffActivationResponseDto
{
}
final class TariffActivationResponse2Dto extends TariffActivationResponseDto
{
}
class TestRepository implements ActivationRepository
{
public function tariffActivation(TariffActivationDto $dto): TariffActivationResponse2Dto
{
var_dump($dto);
return new TariffActivationResponse2Dto();
}
}
(new TestRepository())->tariffActivation((new TariffActivation2Dto()));
Суть в том, чтобы можно было подавать в метод tariffActivation, расширенные DTO, удовлетворяя интерфейсу, который используется между слоями.