go语言中for循环条件返回true时循环体不停的进行循环,直到条件表达式返回false的时候退出循环
//条件表达式返回true的时候循环不听的进行循环,知道条件表达式返回false时自动退出循环
func main() {
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
条件表达式之前定义条件
func main() {
i := 0
for ; i < 10; i++ { //这里没有在条件表达式中进行初始化.但是表达式中的分号要有.
fmt.Println(i)
}
}
循环的出十余家和结束语句都省略
func main() { //for循环的初始语句和结束语句都可以省略
i := 0
for i < 10 {
fmt.Println(i)
i++
}
}
//说明一下.虽然在初始语句和结束语句中都省略了内容,但是最终结果不变.因为被省略的是逻辑判断,实际的累积和初始化定义都是要有的.
无限循环
func main() { //无线循环.不会主动退出循环体
i := 0
for {
fmt.Println(i)
i++
}
}
for range 循环
1.数组,切片,字符串,返回索引和值.
2.map返回键和值
3.通道(channel)只返回通道内的值.
switch语句进行多条件判断
func main() { //无线循环.不会主动退出循环体
i := 3
switch i { //指定条件比较内容,与下面case后面的值进行比较.如果相等,对应的输出case后面的结果.
case 1:
fmt.Println("大拇指")
case 2:
fmt.Println("食指")
case 3:
fmt.Println("中指")
case 4:
fmt.Println("无名指")
case 5:
fmt.Println("小拇指")
}
}
swich进行多个值比较
func main() { //无线循环.不会主动退出循环体
switch n := 7; n { //这里的意思是声明并定义n:=7,然后将n传入下面的case中进行比较.
case 1, 2, 3, 4: //多个值进行比较的时候可以直接使用逗号进行分隔
fmt.Println("A")
case 5, 6, 7, 8:
fmt.Println("B")
default: //如果所有case都不匹配那么走defaut分支.每个switch只能有一个default
fmt.Println("C")
}
}
case分支使用表达式
func main() { //无线循环.不会主动退出循环体
age := 30
switch { //如果在case中进行条件判断的话那么switch就不需要再进行条件的添加了
case age < 25:
fmt.Println("好好学习")
case 25 <= age && age <= 60:
fmt.Println("好好工作")
case age > 60 && age <= 80:
fmt.Println("好好活着")
default:
fmt.Println("活着真好")
}
}
fallthrough语法,可以执行满足case条件的下一个case语句.无论下一个case是否满足条件,
func main() { //无线循环.不会主动退出循环体
age := 30
switch { //如果在case中进行条件判断的话那么switch就不需要再进行条件的添加了
case age < 25:
fmt.Println("好好学习")
case 25 <= age && age <= 60:
fmt.Println("好好工作")
fallthrough
case age > 60 && age <= 80:
fmt.Println("好好活着")
default:
fmt.Println("活着真好")
}
}
使用break跳出循环体
func main() {
BREAKLOOP: //可以指定一个循环开始的标志位,在跳出循环的时候可以跳出整个标志位的循环体.
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
break BREAKLOOP //跳出之前定义好的标志位.剩余标志位之内的所有循环都不会继续执行.
}
fmt.Printf("%v-%v\n", i, j)
}
}
}
使用continue进行结束本次循环并开始下一次循环
func main() {
fooloop1:
for i := 0; i < 5; i++ {
//fooloop2:
for j := 0; j < 5; j++ {
if i == 2 && j == 2 {
continue fooloop1 //表示跳出本次fooloop1循环,继续执行下次fooloop1循环.同样可以指定跳转到foolloop2的位置进行fooloop2的下一次循环.
}
fmt.Printf("%v-%v\n", i, j)
}
}
}
//continue表示跳出本次循环,执行下一次循环.可以指定标志位进行跳出位置.
作业打印99乘法表
func main() {
for q := 1; q <= 9; q++ {
for w := 1; w <= 9; w++ {
if w == 9 {
fmt.Printf("%v*%v=%v\n", q, w, q*w)
} else if q < w {
fmt.Printf("%v*%v=%v ", q, w, q*w)
}
continue
}
}
}