查看: 83|回复: 0

Go语言初步 3

[复制链接]

45

贡献

36

主题

164

积分

版主

积分
164
QQ
发表于 2026-7-2 15:39:13 | 显示全部楼层 |阅读模式
本帖最后由 Elan 于 2026-7-2 15:44 编辑

5.循环(部分代码来自JetbrainsAcademy)

Go不像python之类的语言,python拥有for,while等循环。Go只有for循环。
大致语法如下:
  1. for [1]; [2]; [3] {
  2.     [do]
  3. }
复制代码
[1][2][3]分别代表:
  • 初始化语句:在第一次迭代前执行
  • 条件表达式:在每次迭代前进行评估
  • 后置语句:在每次迭代结束时执行

比如数字累加(有点像阶乘!)并输出:
  1. package main

  2. import "fmt"

  3. func main() {
  4.         sum := 0
  5.         for i := 0; i < 10; i++ {
  6.                 sum += i
  7.         }
  8.         fmt.Println(sum)
  9. }
复制代码
先定义i并赋值为0,当i<10的时候执行sum的累加,然后i自增(上一节里提到过)。
当然,前置语句和后置语句是可选的,你也可以这样写:
  1. package main

  2. import "fmt"

  3. func main() {
  4.         sum := 1
  5.         for sum < 1000 {
  6.                 sum += sum
  7.         }
  8.         fmt.Println(sum)
  9. }
复制代码
是不是觉得for很像其他语言里的while呢?没错!正是这样。
当然,for还有forever的用法,即在条件表达式中填入值为true的bool值(注意不是True),或者简单留空:
  1. for {
  2.     [do]
  3. }
复制代码
就可以永远执行,一般按住CTRL+C或者CTRL+F2来终止。在这里有些不一样的——我们之前提到bool值的默认值是false,但是对于留空的情况,它的值是true。
6.判断
  1. if [1] {
  2.     [do]
  3. }
复制代码
[1]代表条件表达式,只有[1]为true的时候才会do。
if 语句也可以以一个短语句开始,在条件之前执行。
由该语句声明的变量仅在 if 的结束前有效。
  1. if a:=1 ; a<2 {
  2.     fmt.Print(a)
  3. }
复制代码
Go支持else,而且在 if 简短语句中声明的变量也可以在任何 else 块中使用。

  1. if ... {
  2. ...
  3. } else {
  4. ...
  5. }
复制代码
但是if-else 的写法比较复杂,我们可以使用switch语句。
  1. switch var1 {
  2.     case val1:
  3.         [1]
  4.     case val2:
  5.         [2]
  6.     default:
  7.         [3]
  8. }
复制代码
Go的switch与C、C++、Java、JavaScript和PHP中的类似, 但Go只执行被选中的case,而不是所有后续的case。 实际上,在这些语言中每个case结束时需要的break语句在Go中是自动提供的。 另一个重要的区别是,Go的switch case不一定要是常量,并且参与的值不需要是整数。——JetbrainsAcademy

如果你想继续比较,可以使用fallthrough。使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。
  1. package main

  2. import "fmt"

  3. func main() {

  4.     switch {
  5.     case false:
  6.             fmt.Println("1、case 条件语句为 false")
  7.             fallthrough
  8.     case true:
  9.             fmt.Println("2、case 条件语句为 true")
  10.             fallthrough
  11.     case false:
  12.             fmt.Println("3、case 条件语句为 false")
  13.             fallthrough
  14.     case true:
  15.             fmt.Println("4、case 条件语句为 true")
  16.     case false:
  17.             fmt.Println("5、case 条件语句为 false")
  18.             fallthrough
  19.     default:
  20.             fmt.Println("6、默认 case")
  21.     }
  22. }
复制代码
结果为:
  1. 2、case 条件语句为 true
  2. 3、case 条件语句为 false
  3. 4、case 条件语句为 true
复制代码



Hi~ o(* ̄▽ ̄*)ブ I Love U ~
查看帮助

相关侵权、举报、投诉及建议等,请按帮助内指引进行反馈

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部