💬Как поменять местами значения двух переменных без временной переменной? Очень простой вопрос, который может быть задан на собесе.
1️⃣Пример с использованием сложения и вычитания:
Таким образом,
2️⃣Пример с использованием XOR (исключающего ИЛИ):
Когда мы применяем XOR дважды с теми же числами, мы получаем исходное значение переменной, что позволяет нам поменять значения без использования временной переменной.
3️⃣Пример с реализацией простой функции
1️⃣Пример с использованием сложения и вычитания:
a := 5
b := 3
a = a + b
// a становится 8b = 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}
}