HimeraSearchDB
Carding_EbayThief
triada
CrackerTuch
JustinSun

НОВОСТИ Книга «Head First. Изучаем Go»

BDFpromo
Оффлайн

BDFpromo

.
.
Регистрация
23.09.18
Сообщения
12.347
Реакции
176
Репутация
0
Привет. Хаброжители! Go упрощает построение простых, надежных и эффективных программ. А эта книга сделает его доступным для обычных программистов. Основная задача Go — эффективная работа с сетевыми коммуникациями и многопроцессорной обработкой, но код на этом языке пишется и читается не сложнее чем на Python и JavaScript. Простые примеры позволят познакомиться с языком в действии и сразу приступить к программированию на Go. Так что вы быстро освоите общепринятые правила и приемы, которые позволят вам называть себя гофером.


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


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

igs48xlsd_nwxy5xqaaadb5gakq.png


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

fiojl9dklbioob_ls2oetnc_6wk.png


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

gqouyxctwztftnlvxk-lk8kj_qi.png


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

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


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

cyuxmjb0gs3fso_dq3a_lml5wy0.png


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

m6g9qxgkip8kr8thcrw03z6g-je.png


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

8jtxpycqehavxf_1znla8aqzgjm.png


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

sa5tl3_h5id3jl_grtbeiu-mn0c.png



rzmr-9qvhv5rblfjakyky7buscw.png



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


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

w4vcesdzjlscksgeamlmdzup2ow.png


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

ofcleppbutvn4q1pezug-h5kq-a.png


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


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

tksj0yw2jrkh6r9_niwu-3tjoiu.png


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

v32xoxipkcdp9yzhnzonho-qm7u.png


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

xg1-joerrnp_jncq11nejc6ns2k.png


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

yziim0fxb2ihwjqknr315xqiv34.png


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


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

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

81zbjhxlwm7vqkv57f4tnq0bibu.png


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

hbhx7fnmav4dhbwrzofz7dqrbr4.png


8o4r-xwnzd1e2sxi0rne_hs-w6o.png


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


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

9g83k_tsmuw132co0tvhibiuoro.png


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

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

bb1jrskwz9wbxiajznowcxvp3wo.png


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

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

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

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
 
Сверху Снизу