剖析 a,b,c=a+1,a+1,b+1 执行原理

73 阅读1分钟

在 Go 语言中,赋值表达式 a, b, c = x, y, z 是同时进行的,但是其计算顺序是从左到右依次进行的, 即在 a, b, c 被赋值之前,先计算 x, y, z 的值,并依次将它们赋值给 a, b, c

例如:a, b, c = a+1, a+1, b+1,其执行原理是先将a+1b+1的结果保存在临时变量中,最后一次性将它们赋值给a, b, c

具体的执行过程如下:

  1. 先计算a+1,并将结果保存在一个临时变量中;
  2. 接着计算a+1,并将结果保存在一个新的临时变量中(注意这里不是用上一步的结果,而是重新计算);
  3. 然后计算b+1,并将结果保存在另一个临时变量中;
  4. 最后一次性将这三个临时变量的值分别赋值给a, b, c

注意,由于计算顺序是从左到右依次进行的,因此第二个表达式a+1并没有使用到第一个表达式中计算得出的结果。这也就意味着,在计算表达式 a, b, c = a+1, a+1, b+1时,并不会自动地对重复的变量名a进行复用,而是按照先后顺序依次计算赋值。