Pull to refresh

Зачем в Go амперсанд и звёздочка (& и *)?

Reading time 4 min
Views 52K
C *Go *
Tutorial

Если вы хоть раз были сбиты с толку, что означает символ "амперсанд" (&) или "звёздочка" ("знак умножения", *) или запутывались, когда что использовать, то это статья для вас. Авторы Go старались сделать язык знакомым большинству программистов, и многие элементы синтаксиса заимствовали из языка С. Но в 2017м уже сложно понять, большинство программистов владеют С или нет, и смею полагать, что уже нет. Поэтому концепции хорошо знакомые прошлому поколению разработчиков, могут выглядеть совершенной абракадаброй для для нового поколения. Давайте немного копнём историю и расставим все точки над ї в вопросах указателей в Go и использования символов & и *.


Читать дальше →
Total votes 43: ↑37 and ↓6 +31
Comments 32

Go: Как использовать nil-значения без использования ссылочных типов

Reading time 5 min
Views 5.2K
Go *
Translation


Создано на базе изображений gopherize.me


Довольно часто из Go кода нам приходится работать с различными HTTP API или самим выполнять роль HTTP сервиса.


Один из частых случаев: получаем данные в виде структуры из базы данных, отправляем структуру внешнему API, в ответ получаем другую структуру, как-то её преобразуем и сохраняем в базу.


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


Для API нормальна ситуация, когда в структурах запроса и ответа есть поля, которые могут быть nil и могут принимать какие-то не-nil значения. Такие структуры выглядят обычно так

Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Comments 6