LINUX.ORG.RU

Вышел Go 1.2

 


2

5

Через семь месяцев после Go 1.1, 1 декабря 2013 вышла стабильная версия Go 1.2.

Go 1.2 содержит незначительные изменения языка и некоторое количество улучшений в реализации компилятора и инструментов, несколько моментов улучшения производительности, много дополнений и (обратно-совместимых) изменений в стандартной библиотеке. С полным списком изменений можно ознакомиться по ссылке. Коротко об изменениях:

  • Новый трех-индексный синтаксис слайсов добавляет возможность указывать вместимость.
  • Новый фукционал go test, cover, касающиеся вычисления и отображения результатов покрытия тестами кода.
  • Использование диспетчером вытесняющую многозадачность для выполнение горутин и может быть время от времени вызван при входе горутины в функцию.
  • Увеличение размера стека по умолчанию для горутин должно улучшить производительность некоторых программ.
  • Новые функции из пакета runtime/debug.
  • Изменений в стандартной библиотеке: новый пакет encoding, индексные аргументы в строках формата для функций Printf, и некоторые удобные дополнения к пакету template.

В рамках релиза, Go Playground была обновлена до Go 1.2. Это также затрагивает и сервисы, которые используют Playground, такие как Go Tour и блог. Обновления также добавляют возможность использовать в песочнице потоки и пакеты os, net и unsafe, делая ее более похожей на реальное окружение Go.

>>> Подробности

★★

Проверено: mono ()
Последнее исправление: CYB3R (всего исправлений: 5)

Ответ на: комментарий от anonymous

под андроид на нем уже можно писать?

Нельзя, грешновато.

Etch
()
Ответ на: комментарий от Vudod

ООП: наследование, интерфейсы, множественное наследование интерфейсов.

Интерфейсы есть, наследование интерфейсов есть, наследование реализации не нужно.

Шаблоны

Женериков нет.

Лямбды и всякие там мапы (функциональщина).

Лямбды - анонимные функции? Есть. Замыкания, на всякий случай, тоже есть. Функции и методы - жители первого класса. Обобщённых мапов нет, но для конкретных типов лямбды использовать никто не запрещает.

Стандартная библиотека D богаче, например, есть такие вещи, как std.algorithm, std.parallel, std.mathspecial, std.numeric, std.regexp, которыми в Go и не пахнет.

Не хочу сравнивать стандартные библиотеки - в случае статической компиляции и удобного окружения количетсво зависимостей не имеет значения.

Стандартные типы: float, double, real в D с возможностью работы с 80-битною (а на некоторых архитектурах вскоре и 128-битною за счёт эмуляции средствами AVX) арифметикою

Для того, что больше 64 бит, есть math/big.

Кортежи.

Кортежей нет. Несколько возвращаемых значений - это не кортежи, это несколько возвращаемых значений.

foreach (который в Go просто for).

Это for range? Не знаю, что там за foreach в D, но в го range работает только с массивами, слайсами, мапами и каналами. Не сказал бы что это минус.

операции над срезами массивов

Я не понял, что делает этот код.

D может передавать произвольный тип в функцию

Женериков нет. Впрочем, на данный моменнт это открытый вопрос.

Laz ★★★★★
()
Ответ на: комментарий от Laz

слайсы сами по себе ссылается на низлежащий массив

А... Просто я по беглому чтению понял так, что в Go все объекты по значению по умолчанию передаются. Ок.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

В Go есть вложенность структур, которая может вести себя как ООП (но гибче и шире). В т.ч. поддерживать множественное наследование. В Go есть интерфейсы.

Угу. А никто больше не додумался. А в C есть указатели и на их основе можно легко эмулировать любую объектную модель, поэтому C необычайно гибкий с точки зрения ООП язык. Куда там всяким зашореным Явам и Смолтокам.

В Go есть вложенность структур, которая может вести себя как ООП (но гибче и шире). В т.ч. поддерживать множественное наследование. В Go есть интерфейсы.

Вы только что написали map руками для дефолтного int. Для всех остальных типов тоже будете писать? И для другого и типа аргументов?

Ответ был в том же стиле, что и ваши: у нас тут есть некая штука и мы можем на её основе сэмулировать что-то, чего нету. Я вот не пишу, что в D есть метод для расчёта QR разложения на основе вращения Хаусхолдера, хотя могу его легко написать.

Vudod ★★★★★
()
Ответ на: комментарий от Laz

Спасибо за комментарий!

Для того, что больше 64 бит, есть math/big.

Там только целые и рациональные. 80-бит и 128-бит floating point где взять?

Кортежей нет. Несколько возвращаемых значений - это не кортежи, это несколько возвращаемых значений.

Понял, спасибо, подумал, что это как распаковка в Питоне. Значит Go ещё беднее, чем я думал.

Это for range? Не знаю, что там за foreach в D, но в го range работает только с массивами, слайсами, мапами и каналами. Не сказал бы что это минус.

foreach работает со всеми перечисляемыми объектами, включая словари и, вроде бы, кортежи.

Я не понял, что делает этот код.

Складывает вторую половину массива B, умноженную поэлементно на 0.5 с произведением первой половины массива C с массивом D, помещая результат во вторую четверть массива A. Как в Фортране почти. Иногда очень удобно, чтобы не плодить циклы. Естественно, требуется обеспечить идентичность длин.

Vudod ★★★★★
()
Ответ на: комментарий от Laz

Использовать указатель на слайс нет смысла - слайсы сами по себе ссылается на низлежащий массив.

В данном случае верно, но если требуется менять сам слайс - указатель нужен.

anonymous
()
Ответ на: комментарий от Laz

См. список рассылки, посвящённый этой теме.

Не знал о существовании данной рассылки. Сердечно благодарю.

Etch
()
Ответ на: комментарий от KRoN73

В го всё по значению и передаётся, просто значение слайса изнутри — структура с указателем на массив.

PolarFox ★★★★★
()
Ответ на: комментарий от Vudod

Понял, спасибо, подумал, что это как распаковка в Питоне. Значит Go ещё беднее, чем я думал.

Как-то не возникала необходимость в кортежах, но если очень хочется, то можно использовать анонимные структуры, хотя это и несколько вербозно.

foreach работает со всеми перечисляемыми объектами, включая словари и, вроде бы, кортежи.

Для любого объекта можно сделать перечисление через канал или срез, типа того. Так же как и в D для поддержки foreach класс должен реализовать определенные методы.

korvin_ ★★★★★
()
Ответ на: комментарий от Vudod

ох щи горячие

ну посмотри же , что такое утиные интерфейсы голэнга

qulinxao ★★☆
()
Ответ на: комментарий от Vudod

Угу. А никто больше не додумался. А в C есть указатели и на их основе можно легко эмулировать любую объектную модель, поэтому C необычайно гибкий с точки зрения ООП язык. Куда там всяким зашореным Явам и Смолтокам.

Советую перестать говорить впустую и почитать http://nathany.com/good/ и http://stackoverflow.com/questions/1727250/embedding-instead-of-inheritance-i....

Вы только что написали map руками для дефолтного int. Для всех остальных типов тоже будете писать? И для другого и типа аргументов?

Это уже вопрос наличия обобщений (джинериков)

anonymous
()
Ответ на: комментарий от bhfq

Ты еще не знаешь насколько беден rust, там даже xml в std нет!

Что очень странно, потому что это же язык для Мозиллы. Ну да Раст меня и так не вдохновил.

Vudod ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.