Pull to refresh

Книга «Head First. Изучаем Go»

Reading time4 min
Views12K
image Привет. Хаброжители! Go упрощает построение простых, надежных и эффективных программ. А эта книга сделает его доступным для обычных программистов. Основная задача Go — эффективная работа с сетевыми коммуникациями и многопроцессорной обработкой, но код на этом языке пишется и читается не сложнее чем на Python и JavaScript. Простые примеры позволят познакомиться с языком в действии и сразу приступить к программированию на Go. Так что вы быстро освоите общепринятые правила и приемы, которые позволят вам называть себя гофером.


Нулевые значения в массивах


Как и в случае с переменными, при создании массивов все содержащиеся в них значения инициализируются нулевым значением для типа, содержащегося в массиве. Так массив значений int по умолчанию заполняется нулями:

image

С другой стороны, нулевым значением для строк является пустая строка, так что массив строковых значений по умолчанию заполняется пустыми строками:

image

Нулевые значения позволяют безопасно выполнять операции с элементами массивов, даже если им не были присвоены значения. Например, в следующем массиве хранятся целочисленные счетчики. Любой элемент можно увеличить на 1 даже без предварительного присваивания значения, потому что мы знаем, что все значения счетчиков начинаются с 0.

image

При создании массива все содержащиеся в нем элементы инициализируются нулевым значением для типа, хранящегося в массиве.

Литералы массивов


Если вам заранее известны значения, которые должны храниться в массиве, вы можете инициализировать массив этими значениями в форме литерала массива. Литерал массива начинается как тип массива — с количества элементов в квадратных скобках, за которым следует тип элементов. Далее в фигурных скобках идет список исходных значений элементов массива. Значения элементов должны разделяться запятыми.

image

Эти примеры почти не отличаются от предыдущих, если не считать того, что вместо последовательного присваивания значений элементам массива весь массив инициализируется с использованием литерала массива.

image

Литералы массивов также позволяют использовать короткие объявления переменных с помощью :=.

image

Литералы массивов могут распространяться на несколько строк, но перед каждым переносом строки в коде должна стоять запятая. Запятая даже должна стоять после последнего элемента в литерале массива, если за ним следует перенос строки. (На первый взгляд этот синтаксис выглядит неуклюже, но он упрощает последующее добавление новых элементов в коде.)

image


image


Функции пакета «fmt» умеют работать с массивами


Когда вы занимаетесь отладкой кода, вам не нужно передавать элементы массивов Println и другим функциям пакета fmt один за одним. Просто передайте весь массив. Пакет fmt содержит логику форматирования и вывода массивов. (Пакет fmt также умеет работать с сегментами, картами и другими структурами данных, которые будут описаны позднее.)

image

Возможно, вы также помните глагол "%#v", используемый функциями Printf и Sprintf, — он форматирует значения так, как они отображаются в коде Go. При форматировании с "%#v" массивы отображаются в форме литералов массивов Go.

image

Обращение к элементам массива в цикле


Вы не обязаны явно записывать целочисленные индексы элементов массивов, к которым обращаетесь в своем коде. В качестве индекса также можно использовать значение целочисленной переменной.

image

Это означает, что элементы массивов можно перебирать в цикле for. Цикл перебирает индексы массива, а переменная цикла используется для обращения к элементу с текущим индексом.

image

При обращении к элементам массивов через переменную необходимо действовать внимательно и следить за тем, какие значения индексов используются в программе. Как упоминалось ранее, массивы содержат конкретное число элементов. Попытка обратиться к индексу за пределами массива приводит к панике — ошибке, происходящей во время выполнения программы (а не на стадии компиляции).

image

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

image

Проверка длины массива функцией «len»


Написание циклов, которые ограничиваются только правильными индексами, сопряжено с определенным риском ошибок. К счастью, есть пара приемов, которые упрощают этот процесс.

Во-первых, вы можете проверить фактическое количество элементов в массиве перед обращением к элементу. Для этого можно воспользоваться встроенной функцией len, которая возвращает длину массива (количество содержащихся в нем элементов).

image

В цикле обработки всего массива можно воспользоваться функцией len для определения того, по каким индексам можно обращаться безопасно.

image

image

Безопасный перебор массивов в цикле «for...range»


В другом, еще более безопасном способе обработки всех элементов массива используется специальный цикл for...range. В форме с range указывается переменная для хранения целочисленного индекса каждого элемента, другая переменная для хранения значения самого элемента и перебираемый массив. Цикл выполняется по одному разу для каждого элемента в массиве; индекс элемента присваивается первой переменной, а значение элемента — второй переменной. В блок цикла включается код для обработки этих значений.

image

Эта форма цикла for не содержит запутанных выражений инициализации, условия и завершения. А поскольку значение элемента автоматически присваивается переменной, риск обращения к недействительному индексу массива исключен. Форма цикла for с range читается безопаснее и проще, поэтому именно она чаще всего встречается при работе с массивами и другими коллекциями.

Ниже приведен пример с выводом всех значений из массива нот, преобразованный для использования цикла for...range:

image

Цикл выполняется семь раз, по одному разу для каждого элемента в массиве notes. Для каждого элемента переменной index присваивается индекс элемента, а переменной note присваивается значение элемента. После этого мы выводим индекс и значение.

» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

Для Хаброжителей скидка 25% по купону — Head First

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Tags:
Hubs:
+10
Comments12

Articles

Information

Website
piter.com
Registered
Founded
Employees
201–500 employees
Location
Россия