You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:12:40