История изменений
Исправление korvin_, (текущая версия) :
в Golang их подход с автоприменением к типу подходящих интерфейсов очень похож на хаскел , а если точнее на математику
то , что ненужно программисту самостоятельно указывать что тип Т реализует интерфейс И - это реально очень мощное решение.
Не так уж и похож: в Хаскелле тайпкласс можно реализовать для любого типа в любом модуле, в Go — только в том же пакете, что и сам тип. Соответственно, если автор типа не реализовал какой-то нужный тебе метод, тебе придется создавать новый тип и кастовать/оборачивать его тип. Для единичного значения это еще не так напряжно, но для коллекций (слайсов, мапов и т.д.) уже нужно будет обходить всю коллекцию и создавать новую.
Исходная версия korvin_, :
в Golang их подход с автоприменением к типу подходящих интерфейсов очень похож на хаскел , а если точнее на математику
то , что ненужно программисту самостоятельно указывать что тип Т реализует интерфейс И - это реально очень мощное решение.
Не так уж и похож: в Хаскелле тайпкласс можно реализовать для любого типа в любом модуле, в Go — только в том же пакете, что и сам тип. Соответственно, если автор тип не реализовал какой-то нужный тебе метод, тебе придется создавать новый тип и кастовать/оборачивать его тип. Для единичного значения это еще не так напряжно, но для коллекций (слайсов, мапов и т.д.) уже нужно будет обходить всю коллекцию и создавать новую.