Многократное назначение имеет заказ?

Я знаю, что golang поддерживает множественное назначение, например,

a, b = c, d

Я хочу знать, соответствует ли присваивание левому праву? Например, если я играю с деревьями:

parent, child = child, child.child

Гарантирует ли он, что и родительский, и дочерний объекты на одном уровне более глубоки в дереве?

Ответ 1

Да. Из спецификация языка:

Назначение продолжается в два этапа. Во-первых, операнды индексных выражений и указателей (включая неявные указатели указателей в селекторах) слева и выражения справа оцениваются в обычном порядке. Во-вторых, назначения выполняются в порядке слева направо.

Итак, в вашем примере сначала будут оцениваться child и child.child, а затем назначены соответственно parent и child.