【Golang系列】-for循环
2022-03-08
for循环
只有for关键字
语法:
for 初始语句;条件表达式;结束语句{
循环体语句
}
package main
import "fmt"
func f1() {
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
}
func main() {
f1()
}
package main
import "fmt"
func f1() {
i := 1
for ; i <= 10; i++ {
fmt.Println(i)
}
}
func main() {
f1()
}
初始条件和结束条件都可以省略
package main
import "fmt"
func f1() {
i := 1
for i <= 10 {
fmt.Println(i)
i++
}
}
func main() {
f1()
}
永真 死循环
package main
import "fmt"
func f1() {
for {
fmt.Println("一直在执行~~")
}
}
func main() {
f1()
}
结果
一直在执行~~
一直在执行~~
一直在执行~~
一直在执行~~
一直在执行~~
一直在执行~~
...
for循环可以通过break、goto、return、panic语句强制退出循环
for range 循环
可以使用for range 遍历数组、切片、字符串、map及通道,通过for range遍历的返回值有以下规律:
- 数组、切片、字符串返回索引和值
- map返回键和值
- 通道返回通道内的值
package main
import "fmt"
func f() {
var a = [5]int{1, 2, 3, 4, 5}
for i, v := range a {
fmt.Println(i, v)
}
}
func main() {
f()
}
流程控制关键字 break
可以结束for Switch select的代码块
注意
- 单独在select中使用break和不使用没啥区别
- 单独在switch语句,并且没有fallthougt,使用和不使用没啥区别
- 单独在switch语句,有fallthougt,使用break能终止fallthougt后面的
case语句 - 带标签的break,可以跳出多层select、switch作用域,让break更加灵活
package main
import "fmt"
func f2() {
a := 100
switch a {
case 100:
fmt.Println("100")
//break
fallthrough
case 200:
fmt.Println("200")
case 300:
fmt.Println("300")
}
}
func main() {
f2()
}
package main
import "fmt"
func f() {
for i := 0; i < 10; i++ {
fmt.Println(i)
if i >= 5 {
break
}
}
}
func main() {
f()
}
continue只是用在循环中,在go中只能用在for循环中 ,可以终止本次循环,进行下一次循环,在continue语句后添加标签时,表示开始标签对应的循环
goto
代码间的无条件跳转