Go语言:循环语句

简介: Go语言:循环语句

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。

image.gif


循环处理语句

for循环

for 循环是一个循环控制结构,可以执行指定次数的循环。

语法:

Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。

和 C 语言的 for 一样:

forinit; condition; post { }

image.gif

    • init: 一般为赋值表达式,给控制变量赋初值;
    • condition: 关系表达式或逻辑表达式,循环控制条件;
    • post: 一般为赋值表达式,给控制变量增量或减量。

    执行顺序:

    init->condition->{}内代码->post->condition->{}内代码->post->condition...

    和 C 的 while 一样:

    forcondition { }

    image.gif

    和 C 的 for(;;) 一样:

    for { }

    image.gif


    for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:

    forkey, value :=rangeoldMap {
    newMap[key] =value}

    image.gif

    如果只想读取 key,格式如下:

    forkey :=rangeoldMap

    image.gif

    或者

    forkey, _ :=rangeoldMap

    image.gif

    如果只想读取 value,格式如下:

    for_, value :=rangeoldMap

    image.gif


    循环嵌套

    语法:

    for [condition |  ( init; condition; increment ) | Range]

    {

      for [condition |  ( init; condition; increment ) | Range]

      {

         statement(s);

      }

      statement(s);

    }

    举例

    packagemainimport"fmt"funcmain() {
    /* 定义局部变量 */vari, jintfori=2; i<100; i++ {
    forj=2; j<= (i/j); j++ {
    if(i%j==0) {
    break; // 如果发现因子,则不是素数         }
          }
    if(j> (i/j)) {
    fmt.Printf("%d  是素数\n", i);
          }
       }  
    }

    image.gif


    循环控制语句

    break

      • 用于循环语句中跳出循环,并开始执行循环之后的语句。
      • break 在 switch(开关语句)中在执行一条 case 后跳出语句的作用。
      • 在多重循环中,可以用标号 label 标出想 break 的循环。

      continue

      continue 不是跳出循环,而是跳过当前循环执行下一次循环语句

      for 循环中,执行 continue 语句会触发 for 增量语句的执行。

      在多重循环中,可以用标号 label 标出想 continue 的循环。


      goto

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

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

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

      语法:

      goto label;

      ..

      .

      label: statement;

      目录
      相关文章
      |
      19天前
      |
      存储 Go 索引
      go语言中数组和切片
      go语言中数组和切片
      31 7
      |
      19天前
      |
      Go 开发工具
      百炼-千问模型通过openai接口构建assistant 等 go语言
      由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
      |
      19天前
      |
      程序员 Go
      go语言中结构体(Struct)
      go语言中结构体(Struct)
      93 71
      |
      18天前
      |
      存储 Go 索引
      go语言中的数组(Array)
      go语言中的数组(Array)
      100 67
      |
      19天前
      |
      存储 Go
      go语言中映射
      go语言中映射
      32 11
      |
      20天前
      |
      Go 索引
      go语言修改元素
      go语言修改元素
      27 6
      |
      11天前
      |
      Go 数据安全/隐私保护 UED
      优化Go语言中的网络连接:设置代理超时参数
      优化Go语言中的网络连接:设置代理超时参数
      |
      22天前
      |
      开发框架 Go 计算机视觉
      纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
      开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
      |
      1月前
      |
      Go 数据安全/隐私保护 开发者
      Go语言开发
      【10月更文挑战第26天】Go语言开发
      40 3
      |
      1月前
      |
      Java 程序员 Go
      Go语言的开发
      【10月更文挑战第25天】Go语言的开发
      34 3