Golang学习笔记 8.for循环语句

for循环语句

大纲

视频地址https://www.bilibili.com/video/BV14a4y177XG?p=9

for循环

您可能学过别的编程语言,并知道绝大多数语言的循环有for、while、do while三种

但是在Go语言中,只有一种循环,就是for循环

Golang学习笔记 8.for循环语句

与if语句相同,Go语言的for循环与C语言也有如下区别:

  1. for的条件不需要用括号()括住
  2. for的代码块必须加上大括号{}括住,就算只有一行语句
package main
import "fmt"
func main(){
    for i:=0;i<10;i++{
        fmt.Println("你好帅/美")
    }
    // 同样地,前置语句中声明的变量作用域也仅限于for内
    // 下面语句会报错 undefined: i
    // fmt.Println(i)
}

跟C语言一样,可以令for循环的前置或后置语句为空,只添加条件

var i, sum = 1, 0
for sum<10{
    sum+=i
}
fmt.Println(sum) // 10

死循环

在go中,for循环甚至可以让前置、条件和后置语句皆为空,这样相当于for true无限循环

// 下面与for true{}等价
for{
    fmt.Println("你怎么这么好看?")
}

break跳出循环

如果我们不想一直死循环下去,当某个条件成立时退出循环,可以使用break语句

import "fmt"
i:=0
for{
    fmt.Println("你怎么这么好看?")
    i+=1
    if i==3{
        fmt.Println("天生的")
        break
    }
}
/*
你怎么这么好看?
你怎么这么好看?
你怎么这么好看?
天生的
*/

continue跳过当前循环

与break退出整个循环不同,continue是跳过当前循环,也就是说在for代码块中遇到continue,其后的所有语句将被跳过

for i:=1;i<=3;i++{
    if i==2{
        // 不妨将continue换成break试试,看看它们的区别
        continue
    }
    fmt.Println(i)
}
/*
continue结果    break结果
1              1
3
*/

goto转移语句

Go 语言的 goto 语句可以无条件地转移到过程中指定的行

goto 语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能

但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难

它的格式如下:

goto label;
..
.
label: statement;

Golang学习笔记 8.for循环语句

例子

package main
import "fmt"
func main(){
    i:=0
    test: fmt.Println("当前i的值为", i)
    for i<3{
        i++
        if i==2{goto test}
        fmt.Println(i)
    }
    fmt.Println("结束")
}
/*
当前i的值为 0
1
当前i的值为 2
3
结束
*/

总结

条件与循环进行碰撞交融,将会使程序更加有意思