go基础(5)循环语句

for 循环

循环的结构体:

for init; condition; post {

 }

init:一般为赋值表达式,给控制变量一个初始值

condition: 关系表达式或逻辑表达式,循环控制条件(最大的循环次数啊之类的)

post :一般为赋值表达式,给控制变量增量或减量

例 1 + 2 + 3 + 4 +.....+100

sum :=0

for i :=0; i <=100; i++ {

sum +=i

}

第二种for循环

for ; condition; {

 }

只要符合控制条件condition,就会一直执行

sum :=0

for ; sum <10; {

sum++

fmt.Println(sum)

}

第三种for循环

这种更加简洁了,如下:

for sum <=20 {

sum++

fmt.Println(sum)

}

/**  只要满足 sum小于20 sum就会一直自加 */


For-each range 循环

这种循环是用来对符串、数组、切片等的迭代

例:

var name ="龙猫这部电影真的很好看"

for i,s :=range name{

fmt.Println(i,string(s))

}

/** i对应下标 ,s迭代的值 */ 

嵌套循环

在 for 循环中嵌套一个或多个 for 循环

例 打印一个简易的九九乘法表:

for i :=1; i <=9; i++ {

for j :=1; j <= i; j++ {

fmt.Println(j, "*", i, "=", j*i)

}

}

循环控制语句

循环控制语句的作用是在循环体内 控制循环执行过程(跳出循环啊 之类的)

go 语言支持的循环控制语句有:

break语句:经常用于中断当前 for 循环或跳出 switch 语句

在for循环中:

a :=2

for a <20 {

a++

if a >12 {

break

  }

fmt.Println(a)

}

//在上面代码中a一直自加 当a自加到大于12的时候 就直接跳出整个循环 所以只会打印3到12的值

在switch语句中

a :=5

switch {

case a <10:

fmt.Println("a小于10")

fallthrough

case a >3:

fmt.Printf("a大于3")

default:

fmt.Printf("default")

}

上面代码 我们加了fallthrough 所以执行完 a <10里面的内容后 不管下面条件是否成立 还会继续执行下面一行代码,所以最后打印的是:a小于10,a大于3

当我们加上break时候:

a :=5

switch {

case a <10:

fmt.Println("a小于10")

if a <6 {

break

  }

fallthrough

case a >3:

fmt.Printf("a大于3")

default:

fmt.Printf("default")

}

//直接跳出了循环 不会再继续执行,最后输出的是:a小于10

continue 语句:跳过当前循环的剩余语句,然后继续进行下一轮循环(不是中断执行哟)

for循环:

for i :=1; i <5; i++ {

if i ==3 {

continue

  }

fmt.Println(i)

}

//上面代码 当执行到i为3的时候,直接就会跳出此次循环进行一次循环,所以最终的打印的值是 1,2,4

goto语句:将控制转移到被标记的语句

for循环:

for i :=1; i <5; i++ {

if i ==3 {

goto KEDAYA

}

fmt.Println(i)

}

KEDAYA:

fmt.Println("到3执行了goto跳转")

//当执行到i为3的时候,执行了goto转移,转移到label为KEDAYA的地方,最后输出结果为:1, 2, 到3执行了goto跳转

如果不清楚goto 跳转label可以看这儿go基础(5.1)go label 的用法 - 简书

同样的continue (其实执行结果和直接使用continue 一样的,所有感觉continue后面接label优点多余)

KEDAYA:

for i :=1; i <5; i++ {

if i ==3 {

continue KEDAYA

}

fmt.Println(i)

}

//输出结果为1,2,4

break后面接label:

KEDAYA:

for i :=1; i <5; i++ {

if i ==3 {

break KEDAYA

}

fmt.Println(i)

}

//最后输出的结果为1,2

无限循环

如果循环中条件语句永远不为 false 则会进行无限循环(其实就是死循环),我们可以通过 for 循环语句中只设置一个条件表达式来执行无限循环:

for true {

fmt.Println("这个会循环到宇宙重启")

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • GO语言基础 认识并安装GO语言开发环境 Go语言简介 Go语言是谷歌2009年发布的第二款开源编程语言 go语言...
    进击的大东阅读 467评论 0 0
  • 第2章 顺序编程 2.1 变量 变量声明 变量声明的类型信息放在变量之后,放在数组的中括号之后,作返回值类型放在方...
    fjxCode阅读 455评论 0 1
  • 能力模式 选择题 【初级】下面属于关键字的是()A. funcB. defC. structD. class 参考...
    灵魂深灵阅读 5,319评论 2 5
  • go中的label来自于C/C++的的goto(问了下公司写C++的据说都不怎么用,容易导致程序运行混乱) 它的作...
    茸茸布加拉提阅读 1,659评论 0 1
  • 主函数:程序有且只有一个主函数package main //导入主函数的包func main() {} 打印的模...
    hellomyshadow阅读 190评论 0 0