2017-01-22 6 views
2

Я определяю два типа структуры Type1 и Type2Как разрешить неоднозначный селектор в Go

type Type1 struct { 
A1,B1,C1 string 
} 
type Type2 struct { 
A1,B1 string 
} 

встраивать их в типе структуры Supertype

type Supertype struct { 
    Type1 
    Type2 
} 

затем определить интерфейс отправитель с методом Отправить в целях использования как для Type1, так и для Type2

type Sender interface { 
    Send() 
} 

Наконец, я определяю func, где я хочу ссылаться на поля Type1 и Type2

func (p Supertype) Send() { 
.. 
p.A1 = "foo" 
.. 

} 

конечно получать ошибки 'неоднозначного селектор p.A1'. Как использовать метод Отправить для обоих типов struct Type1 и Type2? Существует аналогичный вопрос Как два разных типа реализуют один и тот же метод в golang, используя интерфейсы? но я не думаю, что это относится в моем случае

ответ

5

Вы можете использовать

p.Type1.A1 

если Type2 тоже имеет такое же поле A1