Отказ от ответственности: я играл в Go всего один день, так что есть хороший шанс, что я многое пропустил.
Кто-нибудь знает, почему в Go нет реальной поддержки generics / templates / whatsInAName? Итак, есть общий map
, но он предоставляется компилятором, а программист на Go не может написать свою собственную реализацию. Учитывая все разговоры о том, чтобы сделать Go как можно более ортогональным, почему я могу ИСПОЛЬЗОВАТЬ общий тип, но не СОЗДАТЬ новый?
Особенно, когда дело доходит до функционального программирования, есть лямбды, даже замыкания, но с системой статических типов, не имеющей обобщений, как мне написать, ну, общие функции более высокого порядка, такие как filter(predicate, list)
? Хорошо, связанные списки и тому подобное можно делать, interface{}
жертвуя безопасностью типов.
Поскольку быстрый поиск в SO / Google не дал никакой информации, похоже, что дженерики, если они вообще будут добавлены в Go, будут запоздалыми. Я верю, что Томпсон справится лучше, чем ребята из Java, но зачем убирать дженерики? Или они запланированы и просто еще не реализованы?
interface{}
жертвует безопасностью статического типа. Однако это несколько странная жалоба, когда упоминается Scheme в следующем абзаце, поскольку Scheme обычно не имеет проверки статического типа.