在Go语言中使用a, b = b, a交换两个整数是否安全?
在Go语言中使用
a, b = b, a交换两个整数是否安全? 先看示例代码及其输出:
package main import "fmt" func main() { a := 1 b := 2 fmt.Printf("Before Swap: %v %v\n", a, b) a, b = b, a fmt.Printf(" After Swap: %v %v\n", a, b) }
输出结果:
Before Swap: 1 2 After Swap: 2 1
完全安全。
Go语言的赋值规则明确:赋值语句中,右边的所有表达式会被先完整求值,得到各自的结果后,再一次性赋值给左边对应的变量。
拿a, b = b, a来说,执行时会先获取当前b和a的原始值(也就是示例里的2和1),这一步不会受后续赋值操作的影响;之后再把这两个值分别赋给a和b,整个交换过程没有中间变量被提前覆盖的风险,不会出现逻辑错误。
不光是整数,这种交换方式对Go里的其他基本类型(如字符串、布尔值),甚至结构体、指针等复杂类型也同样适用,本质都是依赖右边表达式先求值的特性,保证交换的安全性和正确性。
内容的提问来源于stack exchange,提问作者xmllmx
相关产品推荐
相关产品推荐

