main.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package main
  2. import "fmt"
  3. func main() {
  4. // 1. 三段式循环:初始化;继续循环的条件;每轮结束后的操作。
  5. // 执行顺序:初始化 -> 判断条件 -> 循环体 -> i++ -> 再判断条件。
  6. fmt.Println("=== 三段式循环 ===")
  7. for i := 1; i <= 3; i++ {
  8. fmt.Printf("第 %d 次学习 Go\n", i)
  9. }
  10. // i 只在上面的 for 语句内有效,循环外不能使用它。
  11. // 2. 累加:每轮把当前数字加入 sum。
  12. fmt.Println("\n=== 累加求和 ===")
  13. sum := 0
  14. for n := 1; n <= 5; n++ {
  15. sum += n // 等价于 sum = sum + n。
  16. }
  17. fmt.Printf("1 到 5 的和:%d\n", sum)
  18. // 3. 只有条件的循环:相当于 C 中的 while。
  19. // Go 没有 while 关键字;注意更新变量,避免死循环。
  20. fmt.Println("\n=== 条件循环 ===")
  21. count := 3
  22. for count > 0 {
  23. fmt.Printf("倒计时:%d\n", count)
  24. count--
  25. }
  26. fmt.Println("开始!")
  27. // 4. continue:跳过本轮剩余代码,进入下一轮。
  28. // 三段式循环中,continue 之后仍会执行更新语句 n++。
  29. fmt.Println("\n=== continue:只输出奇数 ===")
  30. for n := 1; n <= 5; n++ {
  31. if n%2 == 0 { // % 是取余运算符,偶数除以 2 的余数是 0。
  32. continue
  33. }
  34. fmt.Printf("奇数:%d\n", n)
  35. }
  36. // 5. 不写条件的 for 会一直循环,需要通过 break 等方式退出。
  37. // break 结束当前循环,不是结束整个 main 函数。
  38. fmt.Println("\n=== break:结束循环 ===")
  39. attempt := 1
  40. for {
  41. fmt.Printf("第 %d 次尝试\n", attempt)
  42. if attempt == 3 {
  43. break
  44. }
  45. attempt++
  46. }
  47. fmt.Println("循环已结束,后续代码继续执行")
  48. // 6. range 遍历字符串:每轮得到字符的字节索引和 rune 值。
  49. // %c 将 rune 按字符输出;中文字符不一定只占一个字节。
  50. fmt.Println("\n=== range:遍历字符串 ===")
  51. for index, char := range "Go语言" {
  52. fmt.Printf("字节索引:%d,字符:%c\n", index, char)
  53. }
  54. }