循环语句
for 循环是一个循环控制结构,可以执行指定次数的循环
Go 语言的 for 循环有以下三种形式
for init; condition; post { }
ps :
init :一般为赋值表达式,给控制变量赋初始值(可省略)
condition :关系表达式 或 逻辑表达式,循环控制条件
post :一般为赋值表达式,给控制变量 增量 或 减量(可省略)
for condition { }
for { }
循环嵌套
package main
import "fmt"
func main () {
// 定义控制变量
var i, j int
for i = 2; i <= 100; i++ {
for j = 2; j <= (i / j); j++ {
if (i % j == 0) {
break
}
}
if (j > (i / j)) {
fmt.Printf("%d 是素数\n", i)
}
}
}
for 循环的 range 格式可以对 slice切片、map集合、array数组、string字符串、channel通道
在 数组、切片、字符串 中他返回元素的索引和索引对应的值;在 集合 中返回 key-value 对
for i, c := range "go" {
fmt.Println(i, c)
}
ps :range用来枚举Unicode字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)本身。
0 103
1 111
break 关键字
用于在循环语句体中跳出循环,并开始执行循环之后的语句
在多重循环中,可以使用标号 label 标出想 break 的循环
package main
import "fmt"
func main() {
// 不使用标记
fmt.Println("---- break ——")
for i := 1; i <= 3; i++ {
fmt.Printf("i: %d\n", i)
for i2 := 11; i2 <= 13; i2++ {
fmt.Printf("i2: %d\n", i2)
break
}
}
// 使用标记
fmt.Println("---- break label ——")
re:
for i := 1; i <= 3; i++ {
fmt.Printf("i: %d\n", i)
for i2 := 11; i2 <= 13; i2++ {
fmt.Printf("i2: %d\n", i2)
break re
}
}
}
continue 关键字
用于在循环语句体中跳过当前循环,并开始下一次循环的语句
在多重循环中,可以使用标号 label 标出想 continue 的循环
package main
import "fmt"
func main() {
// 不使用标记
fmt.Println("---- continue ---- “)
for i := 1; i <= 3; i++ {
fmt.Printf("i: %d\n", i)
for i2 := 11; i2 <= 13; i2++ {
fmt.Printf("i2: %d\n", i2)
continue
}
}
// 使用标记
fmt.Println("---- continue label ----")
re:
for i := 1; i <= 3; i++ {
fmt.Printf("i: %d\n", i)
for i2 := 11; i2 <= 13; i2++ {
fmt.Printf("i2: %d\n", i2)
continue re
}
}
}
goto 关键字
Go 语言的 goto 语句可以无条件的转移到过程中指定的行
goto 语句通常与条件语句配合使用。可用来实现 条件转移、构成循环、跳出循环体 等功能
但是,在结构化程序设计中一般不主张使用 goto 语句,以免造成流程的混乱,使理解和调试程序产生困难
//for循环配合goto打印九九乘法表
package main
import "fmt"
func main() {
for m := 1; m < 10; m++ {
n := 1
LOOP: if n <= m {
fmt.Printf("%dx%d=%2d ",n,m,m*n)
n++
goto LOOP
} else {
fmt.Println("")
}
}
}