Язык программирования Go: первые впечатления

Как всегда не сижу на месте, ищу приключения на свой головной мозг🙂. Вокруг творится столько интересного и «вкусного», что пройти мимо ну просто нет никакой возможности. Одно из последних «блюд» это язык программирования Go.

Go изобрела всем изветсная «компания добра» Google и как сами утверждают отцы-основатели, Go является одним из инструментов создания внутрекорпаративных систем. Его выделяет простота использования и огроменные возможности (про последнее врать не буду, сам во всем этом новичек). Простота и даже некая элегантность действительно присуща этому языку. Вот лишь некоторые конструкции вызвавшие мое восхищение:

Всем знаком foreach в Java, но как часто нам кроме самого элемента, надо получить еще его индекс и вот код выливается в нечто:

String[] values = new String[] {"value1", "value2"};
int i = 0;
foreach(String s : values)
{
 i++;
}

Как же всё это выглядит в красавце Go

 values := []string{"value1", "value2"}
 for i, s :=range values {
 fmt.Println(i, s)
 }

Как вы сами заметили в одной строке мы получаем доступ как элементу, так и к индексу массива (wow!). «Мелочь» — скажите вы, «Элегантность» — парирую я !

Ну и само собой нектороые замечания и так по порядку:

  • Открывающая скобка «{» на той же строке что и оператор (метод, тип и т.д.) это не особенности форматирования кода, а как я понимаю требования языка. Если вы перенесете скобку на следующую строку, то получите ошибку компиляции.
  • Жёсткое требование языка: если переменная объявлена, то она должна быть обязательно использована (!wow — круто). То есть вот такая конструкция уже не скомпилируется (переменная i нигде не используется):
values := []string{"value1", "value2"}
 for i, s :=range values {
fmt.Println(s)
 }
  • Решается эта проблема просто, одно из значений возвращаемых методом range, да-да в Go методы могут возвращать более одного знаяения, можно «игнорировать» с помощью «_», то есть правильный код должен выглядеть так
values := []string{"value1", "value2"}
 for _, s :=range values {
fmt.Println(s)
 }
  • «Играть» с Go лучше в Linux, под Windows существует только эксперементальная сборка
  • Ну и для любителей Eclipse существует plugin. «Подстветка синтаксиса» — это всё, что он умеет делать хорошо🙂
Отмечено

4 ответа на “Язык программирования Go: первые впечатления

  1. В PHP это выглядит так: foreach($array as $key => $value)

    Весьма удобно

    • В руби: [2,12,85.06].each_with_index { |n, i| puts «#{i}: #{n}» }
      Я, правда, до этого момента не знал о существовании такого метода в Enumerable — в принципе не особо часто именно массив так перебирать надо. А для хеша есть each_pair.

  2. и я так понимаю key — это индекс, а value это элемент массива ? Неочевидный синтаксис😉

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: