03.赋值
交换赋值--异或方式
示例代码
foo := 1
bar := 2
bar = foo ^ bar
foo = foo ^ bar
bar = foo ^ bar
fmt.Printf("foo: %v \n", foo)
fmt.Printf("bar: %v \n",bar)
输出结果
输出结果foo: 2
bar: 1异步就是对比2个参数的每个比特位一一对应比较,比特位相同的为0, 不同的为1, 然后算出一个新的值,这里称为异或值。画图大概是这样:
示例图00000001 <-- foo
00000010 <-- bar
^ ----------
00000011 <-- 异或值那么这个值有什么用呢?首先这个值是由2个值比较出来的结果,也就是通过比较,这3个值就关联起来了。从而拿到任意的2个值就可以通过比较的方式 推导出第3个值。所以 上面
foo
和bar
在没有声明第3个变量名来充当临时保存交的换值,从而完成双值的互换就是利用这种推导关系把值给推导出来。