Golang学习之路(四):Golang的循环语句和循环控制语句

简介: Golang学习之路(四):Golang的循环语句和循环控制语句

一、循环语句


1. 普通循环


1)语法


for init; condition; post { }



  1. init(可选):给控制变量赋初值;
  2. condition(可选):控制条件(不填的时候等于while True);
  3. post(可选):控制变量增量或减量;


2)举例

1.求1到10的数字之和。


package main
import "fmt"
func main() {
  count := 0
  for i := 0; i <= 10; i++ {
    count += i
  }
  fmt.Println("1到10的数字之和为:",count)
}


执行结果

1到10的数字之和为: 55


2.省略init和post:计算count小于10时自相加的值:

package main
import "fmt"
func main() {
  count := 1
  for ; count < 10; {
    count += count
  }
  fmt.Println("count小于10时自相加的值为:",count)
}

也可以省略;号:


package main
import "fmt"
func main() {
  count := 1
  for count < 10{  //省略分号
    count += count
  }
  fmt.Println("1到10的数字之和为:",count)
}


执行结果


count小于10时自相加的值为


3.Golang中没有while循环,可以通过省略condition来实现:

package main
import "fmt"
func main() {
  for { //省略condition
    fmt.Println("死循环")
  }
}


2. 循环嵌套


package main
import "fmt"
func main() {
  count := 0
  for i := 0; i < 10; i++ {
    for j := 0; j <= 10; j++ {
      count += j
    }
  }
  fmt.Println("(1到10的数字之和)x10:",count)
}


输出结果


(1到10的数字之和)x10: 550


3. range循环


用于对字符串、数组、切片等进行迭代输出元素:


package main
import "fmt"
func main() {
  strArray := []string{"a", "b","c"} //字符串数组
  for i,v := range strArray {
    fmt.Println(fmt.Sprintf("下标为:%d 值为:%s", i,v))
  }
}


输出结果


下标为:0 值为:a
下标为:1 值为:b
下标为:2 值为:c


二、循环控制语句


1.Break-中断(跳出)循环

1)中断(跳出)循环

写一个死循环,变量a会一直加1,当a的值大于3的时候则跳出循环:

package main
import "fmt"
func main() {
  a := 1
  for  {
    a++
    fmt.Printf("a 的值为 : %d\n", a)
    if a > 3 {
      /* 使用 break 语句跳出循环 */
      fmt.Printf("跳出循环")
      break
    }
  }
}

输出结果


a 的值为 : 2
a 的值为 : 3
a 的值为 : 4
跳出循环


2)指定想中断(跳出)的循环(嵌套循环中使用)

使用标号,可以指定想跳出的循环。

下面是未使用标记,普通break中断循环,只会中断当前层循环,不会中断外层,外层打印的值始终为11:


package main
import "fmt"
func main() {
  for i := 1; i <= 2; i++ {
    fmt.Printf("外层循环i: %d\n", i)
    for j := 11; j <= 12; j++ {
      fmt.Printf("内层循环j: %d\n", j)
      break  //不使用标记,则只会中断该层循环,不会中断外层循环
    }
  }
}

输出结果


外层循环i: 1
内层循环j: 11
外层循环i: 2
内层循环j: 11


下面是使用标记,指定中断外层循环,等于只循环执行了一次:


package main
import "fmt"
func main() {
re:
  for i := 1; i <= 2; i++ {
    fmt.Printf("外层循环i: %d\n", i)
    for j := 11; j <= 12; j++ {
      fmt.Printf("内层循环j: %d\n", j)
      break re //使用标记,中断外层循环
    }
  }
}


输出结果


外层循环i: 1
内层循环j: 11


2.Continue-跳过当次循环


continue 是跳过当次循环执行后面的循环,而非中断循环


package main
import "fmt"
func main() {
  for a := 1; a < 5; a++ {
    if a == 3 { //a=3时执行continue跳过
      continue
    }
    //a=3时不会执行打印操作
    fmt.Printf("a 的值为 : %d\n", a)
  }
}


执行结果


a 的值为 : 1
a 的值为 : 2
a 的值为 : 4


在循环嵌套时,continue也可以指定跳过的循环,用法与break一样


3.goto-条件转移


goto 可以直接转移到指定代码处进行执行。

下面的代码,当a=3时,会跳出for循环,直接执行LOOP所在行的代码:

package main
import "fmt"
func main() {
  for a := 1; a < 5; a++ {
    if a == 3 { //a等于3;执行goto跳出
      goto LOOP
    }
    //a=3时不会执行打印操作
    fmt.Printf("a 的值为 : %d\n", a)
  }
  LOOP:fmt.Printf("a等于3;执行goto跳出!")
}

执行结果


a 的值为 : 1
a 的值为 : 2
a等于3;执行goto跳出!


不建议使用goto,容易造成代码结构混乱

目录
相关文章
|
缓存 机器人 Go
Golang 语言 beego 学习之安装和快速入门
Golang 语言 beego 学习之安装和快速入门
75 0
|
7月前
|
SQL 前端开发 Go
编程笔记 GOLANG基础 001 为什么要学习Go语言
编程笔记 GOLANG基础 001 为什么要学习Go语言
|
2月前
|
安全 Java Go
【Golang入门】简介与基本语法学习
Golang语言入门教程,介绍了Go语言的简介、基本语法、程序结构、变量和常量、控制结构、函数、并发编程、接口和类型、导入包、作用域以及错误处理等关键概念,为初学者提供了一个全面的学习起点。
29 0
|
4月前
|
机器学习/深度学习 存储 人工智能
Golang bytes 包学习
Golang bytes 包学习
26 3
|
5月前
|
编译器 Go C语言
通过例子学习在golang中调试程序
【7月更文挑战第4天】Go语言支持使用cgo进行汇编调试,官方文档在golang.org/doc/asm。注意,调试Go运行时可能遇到变量不可用或行号错误,需谨慎使用step命令。
74 1
通过例子学习在golang中调试程序
|
7月前
|
Go 开发者
Golang深入浅出之-Go语言流程控制:if、switch、for循环详解
【4月更文挑战第21天】本文介绍了Go语言中的流程控制语句,包括`if`、`switch`和`for`循环。`if`语句支持简洁的语法和初始化语句,但需注意比较运算符的使用。`switch`语句提供多分支匹配,可省略`break`,同时支持不带表达式的形式。`for`循环有多种形式,如基本循环和`for-range`遍历,遍历时修改原集合可能导致未定义行为。理解并避免易错点能提高代码质量和稳定性。通过实践代码示例,可以更好地掌握Go语言的流程控制。
56 3
Golang深入浅出之-Go语言流程控制:if、switch、for循环详解
|
7月前
|
Go
golang学习参考记录
golang学习参考记录
|
7月前
|
JSON Go 数据格式
golang学习7,glang的web的restful接口结构体传参
golang学习7,glang的web的restful接口结构体传参
|
7月前
|
JSON Go 数据格式
golang学习6,glang的web的restful接口传参
golang学习6,glang的web的restful接口传参
|
7月前
|
Java Go 开发工具
golang学习1,dea的golang-1.22.0
golang学习1,dea的golang-1.22.0