Хотя нет, это всё же не аналог Циклон'а. Так, на первый взгляд Go — это прежде всего язык для написания высоконагруженных веб-сервисов (а что бы ещё от гугла ожидать). Сборка мусора, легковесные процессы (go-процедуры), хеши, которые словари, простенький вывод типов… плюс всякие особенности синтаксиса, заставляющие вспомнить про Python и Lua.А что от классов оставили одни интерфейсы — так я сейчас перечитываю «паттерны проектирования» от «банды четырёх» — и, поверьте, это чтиво внушает что «объектная парадигма провалилась» больше, чем все одноимённые нашумевшие речи.
Вот пара цитат прямо по теме:
«У манипулирования объектами строго через интерфейс абстрактного класса есть два преимущества:
— клиенту не нужно иметь информации о конкретных типах объектов, которыми он пользуется, при условии, что все они имеют ожидаемый клиентом интерфейс;
— клиенту необязательно «знать» о классах, с помощью которых реализованы объекты. Клиенту известно только об абстрактном классе (или классах), определяющих интерфейс.
Данные преимущества настолько существенно уменьшают число зависимостей между подсистемами, что можно даже сформулировать принцип объектно-ориентированного проектирования для повторного использования: программируйте в соответствии с интерфейсом, а не с реализацией.»
«Зависимость от реализации может повлечь за собой проблемы при попытке повторного использования подкласса. Если хотя бы один аспект унаследованной реализации непригоден для новой предметной области, то приходится переписывать родительский класс или заменять его чем-то более подходящим. Такая зависимость ограничивает гибкость и возможности повторного использования. С проблемой можно справиться, если наследовать только абстрактным классам, поскольку в них обычно совсем нет реализации или она минимальна.»