这是我参与「第五届青训营 」笔记创作活动的第2天
for循环:类似C++
自己实现了一个九九乘法表
package main
import "fmt"
func main() {
for i := 1; i <= 9; i++ {
for j := 1; j <= i; j++ {
fmt.Printf(" %d * %d = %d", j, i, i*j)
}
fmt.Println()
}
}
值得注意的是,for的第一行并不需要像cpp那样加括号
另外,关于初始化可能你也碰到了和我一样的困惑
for index := 1; index <= 20; index++ { //这样子不行:for var index int = 1; index <= 20; index++
去了解以后发现给出的解释是这样的:
这种形式的for子句的初始化语句不能是任何类型的语句,而必须是“简单语句”(这种语句的一种情况是你看到的工作中的“短变量声明”)。至于原因,它就像Go语言中的许多其他选择一样:为了保持代码的可读性,看起来像其他开发人员的Go代码:如果您可以在这里放入任何类型的语句,for循环将不容易识别(并且会混合除循环初始化之外的其他关注点)。
其实也就是为了保持代码的可读性,记住这个操作即可\
笔者更加熟悉python语法,所以和Py作了比较。Go的break,continue与pyton类似,不赘述。主要介绍goto和标记
标记:
Label:statement ,标记可以配合continue、break、goto使用
break搭配label则直接退出label标记的最外层循环
continue搭配label:以往在Python中continue是直接进入到continue在属于的循环体的下一次循环,也就是continue以下的语句都忽略,直接进行+1操作,然后从循环体的第一行语句开始执行
在Go里区别在于,有了标记,那么对应的就是label对应的最外层循环体的变量+1,然后从label对应循环体的第一行语句开始执行。
实际上,仔细对比会发现,依旧指的是continue在所属的循环体,label起到了赋予所属指向性的作用
例子如下:
lazy:
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue lazy
}
fmt.Println(i)
}
结果:\
Goto:搭配Label使用,一张图就可以说明清楚,
也就是直接进入到某个标记的代码块