задачу:
type Animal interface {
Eat()
Move()
Speak()
}
type Cow struct{name, food, locomotion, noise string}
func (c Cow) Eat() { ... }
func (c Cow) Move() { ... }
func (c Cow) Speak() { ... }
/// еще несколько типов, которые соответствуют интерфейсу Animal
func main() {
animals := []Animal{}
// добавляю в массив элементы и хочу найти нужные элемент по имени
}
Как правильно разрешить типы, чтобы он нашел мне по имени нужный элемент массива, если в интерфейсе нет этого поля?
p.s не очень хочется на каждую структуру создавать отдельные переменные, а хранить все в одном массиве
как-то так for _, a := range animals { switch v := a.(type){ case Cow: // v.name case Dog: // v.name default: // unsupported animal type } }
а что в этом случае type? я хочу искать по имени, который лежит в типе
https://tour.golang.org/methods/16
есть еще способ с reflect, но не советую....
Обсуждают сегодня