概述
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语言入门系列文章目录一、程序的流程结构总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复