Я пытаюсь немного перейти на язык программирования .
Я взволнован простотой Go, но после игры с ней я столкнулся с некоторыми проблемами.
1. Я знаю, что Go не поддерживает дженерики и наследование. Есть ли способ реализовать общий список?
Я думаю об использовании:
type Any interface { }
но как я могу проверить, что значение равно NULL.
Я ищу эквивалентную реализацию C
struct List {
List* tail;
void* head;
}
Или используя алгебраический тип данных:
data List a = Nil | Cons a (List a)
2 Более сложным требованием было бы создать контейнер для объектов с полем определенного типа?
Например, в языке программирования Scala я могу ввести:
val List[Animal { type SuitableFood = Grass} ]
для получения List
из Animals
с типом элемента SuitableFood
, равным Grass