Comments 28
но вот тонкости когда его использовать, а когда нет — это немного не в духе Go.Поясните пожалуйста =)
Возможно такой уже есть, надо искать.
Если хорошо расписать, то какой-то минимальный шанс на значения по умолчанию для структур есть.
Насчёт параметров функций по умолчанию не уверен. Не упаковывал бы
это всё в один proposal.
это алисы для типов:
Алисы -> Алиасы
фронтенд с gopherjs так же довольно приятно готовить
зачем он мне?
простой синтаксис и go fmt
нормальное ООП на интерфейсах. чтобы реализовать для типа интерфейс, не надо менять тип
нет убийц времени — эксепшнов, наследования, перегрузки операторов и функций, конструкторов, неявных преобразований типов и т.п.
всё, что нужно, есть в стандартной библиотеке искаропки. На вскидку — http сервер c http/2.0 и tls, https без использования OpenSSL, поддержка автоматического получения и обновления TLS-сертификатов, сериализатор asn, data-driven шаблоны для генерации форматированного вывода, парсеры, синт.анализаторы. Не надо на любой чих мучительно искать очередную маргинальную библиотеку от непонятно кого.
поддержка всех необходимых средств для тестирования и замеров производительности out of the box. Профилирование можно включать/отключать удаленно в продакшн в любой момент времени, и это не снизит существенно скорость программы.
сверхбыстрый быстрый GC — паузы не превышают 100 микросекунд на любом размере хипа. Для сравнения STW паузы в net core зависят от настроек GC и размера хипа, и измерены в районе 100 миллисекунд. В 1.9 GC ещё и параллельная сборка мусора добавлена
горуитины повышают перформанс и упрощают разработку — линейный синхронный код vs. асинхронщина, в которую ни кто толком не умеет.
кросс-платформенная компиляция out of the box и сборка программы в один самодостаточный бинарник без внешних зависимостей избавляет от dll hell, dependency hell и костылей в виде docker-а. Бинарник Гоу весит мало, потребляет память скромно и ему для запуска не нужна виртуальная машина внушительного размера на подобие JVM.
- высокая скорость компиляции — существенно выше чем в C#, Java, Rust не говоря уже о C++ и Scala
Я только недавно начал изучать Go, однако сразу бросилось в глаза его сходство с PureBasic. С большего, это два Си-подобных языка, кроссплатформенные, не имеют классов в явном виде. Единственное, что в PureBasic нету корутин и GC, но в то же время у него богаче стандартная библиотека, есть поддержка UI. Удивительно.
В пакет sync добавился новый тип MapПосмотрел описание на сайте Go и не вполне понял (есть сомнения) следующее:
It is optimized for use in concurrent loops with keys that are stable over time, and either few steady-state stores, or stores localized to one goroutine per key.
Релиз Go 1.9