Глупые непоняточки по реверсу массива в Go
Я только начал осваивать этот язык и написал кривой реверс массива. После я решил посмотреть как это можно сделать иначе или проще, и нашел вариант решения на стековерфлоу:
for i, j := len(arr)-1, 0; i > j; i, j = i-1, j+1 {
arr[i], arr[j] = arr[j], arr[i]
}
Работает, но я немного не не понимаю - как? Как значения так просто перезаписываются и не перетираются?
Ведь:
for i, j := len(arr)-1, 0; i > j; i, j = i-1, j+1 {
arr[j] = arr[i]
arr[i] = arr[j]
}
Будет не верно, ибо индексы просто начнут друг-друга перезаписывать и вместо, например, 5,4,3,2,1 я получу 1,2,3,2,1. Я понимаю как это работает, но не понимаю как работает вариант со стековерфлоу.
Объясните пожалуйста то как работает перезапись массивы в случае со стековерфлоу. И буду благодарен за источник в виде документации относящиеся к подобному роду записи.
Значения кортежа arr[j], arr[i] вычисляются до выполнения операции присваивания.
А во втором случае операции присваивания выполняются последовательно.
Глупый массив в Гоу и текст на Паскале