我是靠谱客的博主 成就红牛,最近开发中收集的这篇文章主要介绍Go语言入门--流程语句Go语言入门系列文章目录一、程序的流程结构总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Go语言入门系列文章目录

  • Go语言入门–基础语法
  • Go语言入门–流程语句
  • Go语言入门–数组和切片
  • 集合(Map)(咕咕咕????)
  • 字符串(string)
  • 函数
  • 指针
  • 结构体
  • 方法
  • 接口
  • 错误
  • IO操作
  • 并发
  • 反射

文章目录

  • Go语言入门系列文章目录
  • 一、程序的流程结构
    • 1 条件语句-if
      • 1.1 If语句
      • 1.2 if变体
    • 2 条件语句-switch
      • 2.1switch语句
      • 2.2 fallthrough
      • 2.3Type Switch
      • 2.4 注意事项
    • 3 循环语句
      • 3.1 for语句
      • 3.2 for循环变体
      • 3.3 多层for循环
      • 3.4 注意事项
    • 4 跳出循环的语句
      • 4.1 break语句
      • 4.2 continue语句
      • 4.3 goto语句
  • 总结

一、程序的流程结构

程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。

顺序结构:从上向下,逐行执行。

选择结构:条件满足,某些代码才会执行。0-1次

​ 分支语句:if,switch,select

循环结构:条件满足,某些代码会被反复的执行多次。0-N次

​ 循环语句:for

1 条件语句-if

1.1 If语句

语法格式:

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
} else {
  /* 在布尔表达式为 false 时执行 */
}

if 布尔表达式1 {
   /* 在布尔表达式1为 true 时执行 */
} else if 布尔表达式2{
   /* 在布尔表达式1为 false ,布尔表达式2为true时执行 */
} else{
   /* 在上面两个布尔表达式都为false时,执行*/
}

1.2 if变体

如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是

if statement; condition {  
}

if condition{

}

2 条件语句-switch

2.1switch语句

witch是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。它可以被认为是一种惯用的方式来写多个if else子句。

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。
switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。

而如果switch没有表达式,它会匹配true

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

语法格式:

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

2.2 fallthrough

如需贯通后续的case,就添加fallthrough

switch var1 {
    case val1:
        ...
    case val2:
        ...
        fallthrough
    default:
        ...
}

2.3Type Switch

switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。

switch x.(type){
    case type:
       statement(s);      
    case type:
       statement(s); 
    /* 你可以定义任意个数的case */
    default: /* 可选 */
       statement(s);
}

2.4 注意事项

case后的常量值不能重复
case后可以有多个常量值
fallthrough应该是某个case的最后一行。如果它出现在中间的某个地方,编译器就会抛出错误。

3 循环语句

3.1 for语句

语法结构

for init; condition; post { }

3.2 for循环变体

所有的三个组成部分,即初始化、条件和post都是可选的。

for condition { }
for { }

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

for key, value := range oldMap {
    newMap[key] = value
}

3.3 多层for循环

for循环中又有循环嵌套,就表示多层循环了。

3.4 注意事项

初始化语句只执行一次。在初始化循环之后,将检查该条件。如果条件计算为true,那么{}中的循环体将被执行,然后是post语句。post语句将在循环的每次成功迭代之后执行。在执行post语句之后,该条件将被重新检查。如果它是正确的,循环将继续执行,否则循环终止。
在for循环中声明的变量仅在循环范围内可用。因此,i不能在外部访问循环。

4 跳出循环的语句

4.1 break语句

break:跳出循环体。break语句用于在结束其正常执行之前突然终止for循环

package main

import (  
    "fmt"
)

func main() {  
    for i := 1; i <= 10; i++ {
        if i > 5 {
            break //loop is terminated if i > 5
        }
        fmt.Printf("%d ", i)
    }
    fmt.Printf("nline after for loop")
}

4.2 continue语句

continue:跳出一次循环。continue语句用于跳过for循环的当前迭代。在continue语句后面的for循环中的所有代码将不会在当前迭代中执行。循环将继续到下一个迭代。

package main

import (  
    "fmt"
)

func main() {  
    for i := 1; i <= 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Printf("%d ", i)
    }
}

4.3 goto语句

goto:可以无条件地转移到过程中指定的行。
语法结构

goto label;
..
..
label: statement;
package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 10

   /* 循环 */
   LOOP: for a < 20 {
      if a == 15 {
         /* 跳过迭代 */
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %dn", a)
      a++     
   }  
}

统一错误处理
多处错误处理存在代码重复时是非常棘手的,例如:

        err := firstCheckError()
    if err != nil {
        goto onExit
    }
    err = secondCheckError()
    if err != nil {
        goto onExit
    }
    fmt.Println("done")
    return
onExit:
    fmt.Println(err)
    exitProcess()

总结

本文为我自己的学习笔记,记录一下方便以后查阅. 如有问题请和我联系

最后

以上就是成就红牛为你收集整理的Go语言入门--流程语句Go语言入门系列文章目录一、程序的流程结构总结的全部内容,希望文章能够帮你解决Go语言入门--流程语句Go语言入门系列文章目录一、程序的流程结构总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部