|
|
本帖最后由 Elan 于 2026-7-2 15:44 编辑
5.循环(部分代码来自JetbrainsAcademy)
Go不像python之类的语言,python拥有for,while等循环。Go只有for循环。
大致语法如下:
- for [1]; [2]; [3] {
- [do]
- }
复制代码 [1][2][3]分别代表:
- 初始化语句:在第一次迭代前执行
- 条件表达式:在每次迭代前进行评估
- 后置语句:在每次迭代结束时执行
比如数字累加(有点像阶乘!)并输出:
- package main
- import "fmt"
- func main() {
- sum := 0
- for i := 0; i < 10; i++ {
- sum += i
- }
- fmt.Println(sum)
- }
复制代码 先定义i并赋值为0,当i<10的时候执行sum的累加,然后i自增(上一节里提到过)。
当然,前置语句和后置语句是可选的,你也可以这样写:
- package main
- import "fmt"
- func main() {
- sum := 1
- for sum < 1000 {
- sum += sum
- }
- fmt.Println(sum)
- }
复制代码 是不是觉得for很像其他语言里的while呢?没错!正是这样。
当然,for还有forever的用法,即在条件表达式中填入值为true的bool值(注意不是True),或者简单留空:
就可以永远执行,一般按住CTRL+C或者CTRL+F2来终止。在这里有些不一样的——我们之前提到bool值的默认值是false,但是对于留空的情况,它的值是true。
6.判断
[1]代表条件表达式,只有[1]为true的时候才会do。
if 语句也可以以一个短语句开始,在条件之前执行。
由该语句声明的变量仅在 if 的结束前有效。
- if a:=1 ; a<2 {
- fmt.Print(a)
- }
复制代码 Go支持else,而且在 if 简短语句中声明的变量也可以在任何 else 块中使用。
- if ... {
- ...
- } else {
- ...
- }
复制代码 但是if-else 的写法比较复杂,我们可以使用switch语句。- switch var1 {
- case val1:
- [1]
- case val2:
- [2]
- default:
- [3]
- }
复制代码Go的switch与C、C++、Java、JavaScript和PHP中的类似, 但Go只执行被选中的case,而不是所有后续的case。 实际上,在这些语言中每个case结束时需要的break语句在Go中是自动提供的。 另一个重要的区别是,Go的switch case不一定要是常量,并且参与的值不需要是整数。——JetbrainsAcademy
如果你想继续比较,可以使用fallthrough。使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。
- package main
- import "fmt"
- func main() {
- switch {
- case false:
- fmt.Println("1、case 条件语句为 false")
- fallthrough
- case true:
- fmt.Println("2、case 条件语句为 true")
- fallthrough
- case false:
- fmt.Println("3、case 条件语句为 false")
- fallthrough
- case true:
- fmt.Println("4、case 条件语句为 true")
- case false:
- fmt.Println("5、case 条件语句为 false")
- fallthrough
- default:
- fmt.Println("6、默认 case")
- }
- }
复制代码 结果为:
- 2、case 条件语句为 true
- 3、case 条件语句为 false
- 4、case 条件语句为 true
复制代码
|
|