本文详解 Go Tour 中“For continued”练习的执行过程,揭示 sum += sum 如何通过重复自加实现 2 的幂次增长,最终输出 1024 的内在机制。
本文详解 go tour 中“for continued”练习的执行过程,揭示 `sum += sum` 如何通过重复自加实现 2 的幂次增长,最终输出 1024 的内在机制。
在 Go Tour 的 Flow Control → For continued 练习中,给出了如下简洁但富有启发性的代码:
package main
import "fmt"
func main() {
sum := 1
for ; sum <p>这段代码看似简单,却精准体现了 Go 中 for 循环的灵活性——它省略了初始化语句和后置语句,仅保留条件判断(sum </p><p>关键在于循环体内的 sum += sum,等价于 sum = sum * 2。因此,变量 sum 并非线性递增,而是以 <strong>指数方式翻倍</strong>:</p>
- 初始:sum = 1
- 第1次循环:sum = 1 + 1 = 2
- 第2次:sum = 2 + 2 = 4
- 第3次:sum = 4 + 4 = 8
- 第4次:sum = 8 + 8 = 16
- ……
- 第9次后:sum = 512 → 满足 512
- 第10次:sum = 512 + 512 = 1024 → 此时 1024
- 最终输出:1024
✅ 注意:循环条件在每次迭代开始前检查。因此 sum 达到 1024 后不再进入循环体,而是直接退出并打印结果。
这种写法虽无 i++ 或传统计数器,却清晰展示了 Go 对 C 风格 for 的精简支持——三个部分均可省略(如 for { } 即无限循环),使开发者能更专注逻辑本身。
? 小结:
- sum += sum 是 2 的幂增长的核心操作;
- 循环终止于首个不满足 sum
- 理解该例有助于掌握 Go 中无初始化/无后置语句的 for 用法,也为后续学习 range、break/continue 及循环嵌套打下基础。











