Сайт работает в тестовом режиме - все замечания, предложения и информацию о найденных ошибках направляйте, пожалуйста, в Telegram-группу
Курс в процессе наполнения. Полный курс доступен на Степике

Баг: Забывать, что значения справа вычисляются ДО присваивания

Новички думают, что присваивание происходит последовательно слева направо. На самом деле Go сначала вычисляет все значения справа (по старым значениям переменных), а потом присваивает.

Пример непонимания:

a, b := 1, 2
a, b = a+1, b+1   // что будет?
// Правильно: сначала a+1=2, b+1=3, потом a=2, b=3

Коварный пример:

a, b := 1, 2
a, b = b, a      // обмен работает!
// Сначала вычисляется (b=2, a=1), потом a=2, b=1

А вот что НЕ работает как ожидается:

a := 1
a, a = 2, 3      // ⚠️ что будет? a = 3
// Сначала вычисляется (2, 3), потом a получает последнее значение 3

Go как бы делает фото всех значений справа, потом раздаёт их переменным слева

Загрузка...