Я стремлюсь реализовать структуру, которая может быть либо Foo, либо Bar.
Итак, сейчас у меня есть:
type Foo struct{}
type Bar struct{}
// This is the end version consumed by my package
type Baz struct {
Foo Foo `json:"foo,omitempty"`
Bar Bar `json:"bar,omitempty"`
// ... there are different members here
}
Тогда в моих внутренних функциях мне нужнопроверьте, содержит ли Baz Foo или Bar, и обработайте их по-разному.
Есть ли идиоматический способ справиться с этим?Прямо сейчас я проверяю, являются ли члены Foo значениями по умолчанию, но это кажется хакерским.
Я подумал о том, чтобы сделать указатели членов таким образом, чтобы они могли быть обнуляемыми, и тогда я смогу проверить их на ноль.
Я что-то здесь упускаю?