💬Как поменять местами значения двух переменных без временной переменной? Очень простой вопрос, который может быть задан на собесе.



1️⃣Пример с использованием сложения и вычитания:



a := 5

b := 3




a = a + b // a становится 8

b = a - b // b становится 5

a = a - b // a становится 3



Таким образом, a и b меняются значениями без использования временной переменной.



2️⃣Пример с использованием XOR (исключающего ИЛИ):



a := 5 // 0101 в двоичной системе

b := 3 // 0011 в двоичной системе



a = a ^ b // a становится 6 (0110)

b = a ^ b // b становится 5 (0101)

a = a ^ b // a становится 3 (0011)



Когда мы применяем XOR дважды с теми же числами, мы получаем исходное значение переменной, что позволяет нам поменять значения без использования временной переменной.



3️⃣Пример с реализацией простой функции



func main() {

fmt.Println(swap())

}



func swap() []int {

a, b := 15, 10

b, a = a, b

return []int{a, b}

}