GoLang 学习笔记 - 循环语句

凉丶心园 · · 622 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  GoLang 中的循环语句只有 for 循环,没有像 C 语言中那样的 whiledo ...while 循环,但是可以改变写法实现 do ...while 循环。

  GoLang 循环语句的语法:

// 和 C 语言的 for 一样
for init; condition; post {
    // ....
} 
  • init: 一般为赋值表达式,给控制变量赋初值;
  • condition: 关系表达式或逻辑表达式,循环控制条件;
  • post: 一般为赋值表达式,给控制变量增量或减量。

for 语句执行过程如下:
  1. 执行 init 赋值表达式.
  2. 检查控制变量是否满足 condition 的条件,若其值为 true ,则执行循环体内语句,然后执行 post,进入下一次循环,再检查 condition ,若 condition 的值为假,则结束循环。

  实现 C 语言中的 do ...while 循环:

for condition {
    // ....
} 

  这种写法在 for 后面只需写 condition 即可。
  实现 C 语言中的 for( ; ; ) 循环:

for {
    // ....
} 

  这是死循环,若想结束循环,必须在循环体里面写上流程控制代码段,类似于递归函数中的递归头。

  GoLang 中 for 循环还可以对 切片、集合、数组、字符串等进行迭代循环,即 range 格式:

// 复制 Map
for key, value := range oldMap {
    newMap[key] = value
}

循环控制

  循环控制语句可以控制循环体内语句的执行过程,GoLang 支持以下几种循环控制语句:

控制语句 描述
break 经常用于中断当前 for 循环或跳出 switch 语句。
continue 跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 将控制转移到被标记的语句。

break 与 continue

  break 与 continue 的用法一样,但作用不一样:

package main

import "fmt"

func main() {
    // 输出10以内所有奇数
    num := 10
    i := 0
    for {
        i += 1
        if i%2 == 1 {
            fmt.Print(i, " : ")
        } else {
            continue  // 如果没有 continue 语句,无论 i 是不是奇数, i 都会说他是奇数
        }
        fmt.Println("\"啦啦啦~ 我是奇数~\"")
        if i >= num - 1 {
            break  // 如果没有 break 语句,循环体会一直执行,不断输出奇数
        }
    }
}

   运行结果为:

1 : "啦啦啦~ 我是奇数~"
3 : "啦啦啦~ 我是奇数~"
5 : "啦啦啦~ 我是奇数~"
7 : "啦啦啦~ 我是奇数~"
9 : "啦啦啦~ 我是奇数~"

goto

   goto 语句可以无条件地转移到过程中指定的行,通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能,类似于汇编语言中的 jmp 指令。但是在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。

   goto 语法格式如下:

goto label;
..
label: statement;

如:

package main

import "fmt"

func main() {
// 在变量 a 等于 15 的时候跳过本次循环并回到循环的开始语句 LOOP 处
   var a int = 10
   LOOP: for a < 20 {
      if a == 15 {
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %d\n", a)
      a++     
   }  
}

执行结果为:

a的值为 : 10
a的值为 : 11
a的值为 : 12
a的值为 : 13
a的值为 : 14
a的值为 : 16
a的值为 : 17
a的值为 : 18
a的值为 : 19




以上内容均源于网络,并加上自己的实践和理解,如有错误的地方,请在评论区指正。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:凉丶心园

查看原文:GoLang 学习笔记 - 循环语句

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

622 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传