golang的循环控制

发布于:2025-08-01 ⋅ 阅读:(17) ⋅ 点赞:(0)

for循环

基本语法

  1. 第一种
    for 循环变量初始化;循环条件;循环变量迭代{
    循环操作(语句)
    }
    for i := 0; i < 10; i++ {
    fmt.Println(1)
    }
  2. 第二种 类似于其它语言得while,但是golang中没有while!!!
    for 循环条件{
    循环操作(语句)
    }
    i := 0
    for i < 10 {
    fmt.Println(1)
    i++
    }
  3. 第三种 通常需要配合break操作
    for {
    循环操作
    }
    i := 0
    for {
    if i > 10 {
    break
    }
    fmt.Println(1)
    i++
    }
    等价于for ;;{},是一个无限循环

for循环的四要素

  1. 循环变量初始化
  2. 循环条件
  3. 循环操作,也成为循环体
  4. 循环变量迭代

for循环的执行顺序(以案例代码说明)

for i := 0; i < 10; i++ {
	fmt.Println(1)
}
  1. 循环变量初始化(i:=0)
  2. 判断循环条件(i<10),条件表达式为真,则继续执行第三步,为假则直接跳出循环
  3. 循环操作,也成为循环体(fmt.Println(1))
  4. 循环变量迭代(i++)

for循环的使用细节

  1. 循环条件必须是一个返回bool值得表达式
  2. for循环遍历
    1. 传统遍历
      var s string = “zjwwxnl”
      for i := 0; i < len(s); i++ {
      fmt.Printf(“%c\n”, s[i])
      }
    2. golang提供for-range的方式,可以方便的遍历字符串和数组
      for index, val := range s {
      fmt.Printf(“%v的索引对应%c\n”, index, val)
      }
    3. 区别
      1. 传统方法是按照字节进行输出的,当string类型里面出现中文(在utf-8中三个字节乃至四个字节组成)时,就会出现乱码的情况。可以使用将string转成[]rune切片的方式来解决
        var s string = “郑静雯wxnl”
        var s2 = []rune(s)
        for i := 0; i < len(s2); i++ {
        fmt.Printf(“%c\n”, s2[i])
        }
      2. 而第二种for-range是按照字符的方式遍历
        for index, val := range s {
        fmt.Printf(“%v的索引对应%c\n”, index, val)
        }
        输出结果:
        0的索引对应郑
        3的索引对应静
        6的索引对应雯
        9的索引对应w
        10的索引对应x
        11的索引对应n
        12的索引对应l
        不难发现它会自动的跳过字节,找到完整字符

    实现while和dowhile

while的实现

结构:
循环变量声明
for {
if 循环条件{
break //跳出循环
}
循环执行
循环变量迭代
}
代码示例:
var i=0
for {
if i>10{
break //跳出循环
}
fmt.Println(1)
i++
}

do…while的实现

结构:
循环变量声明
for {
循环执行
循环变量迭代
if 循环条件{
break //跳出循环
}
}
代码示例:
var i=0
for {
fmt.Println(1)
i++
if i>10{
break //跳出循环
}
}

跳转

break

基本介绍

break是用来跳出for循环以及switch的常用利器

标签的介绍

是在一个循环外的,比如说定义一个循环的标签名是label1,那么它应该在for语句的上一行独立成行,并跟上冒号

break与标签

代码样例
func main() {
// label1:
for i := 0; i < 4; i++ {
label2:
for j := 0; j < 2; j++ {
if i+j >= 2 {
break label2
}
fmt.Printf(“%d”, i+j)
}
}
}
此时的break和break label2是一个效果,都是退出内循环
而break label2是退出外循环

continue

用法和break一样,包括标签,只不过continue是跳转到下一次循环,而break是跳出循环

goto

goto的基本介绍

  1. goto可以跳到任意行
  2. goto常常与条件判断结合
  3. golang中不是很建议使用goto,会使理解代码和调试变得困难
    代码用例:
    func main() {
    var a = 20
    fmt.Println(1)
    fmt.Println(1)
    fmt.Println(1)
    if a > 10 {
    goto label
    }
    fmt.Println(1)
    fmt.Println(1)
    label:
    fmt.Println(1)
    fmt.Println(1)
    }
    输出结果为:
    1
    1
    1
    1
    1

return

return的基本介绍

  1. return是用来退出方法和函数的,其之后的代码全部不执行
  2. 如果return在main函数中,说明直接退出程序
    代码用例:
    func main() {
    var a = 20
    fmt.Println(1)
    fmt.Println(1)
    fmt.Println(1)
    if a > 10 {
    return
    }
    fmt.Println(1)
    fmt.Println(1)
    fmt.Println(1)
    fmt.Println(1)
    }
    输出结果为:
    1
    1
    1