Golang语言社区--Go语言基础第五节流程控制
时间:2022-05-03
本文章向大家介绍Golang语言社区--Go语言基础第五节流程控制,主要内容包括1、选择语句、2、循环语句、3、跳转语句、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
大家好,我是Golang语言社区(www.Golang.LTD)主编彬哥,今天给大家带来的是关于go语言中的流程控制。
1、选择语句
if 条件表达式 {
...
} else {
...
}
注意:
- 条件表达式不需要使用括号();
- 条件语句体必须使用花括号,且"{"必须与 if 或者 else处于同一行;
- 在if 和条件表达式之间,可以添加变量初始化语句,使用";"间隔;
- 在有返回值的函数中,不允许将最终的return语句包含在if...else...结构中;
例子:
package main
import (
"fmt"
)
func init() {
fmt.Println("Golang语言社区 www.Golang.LTD")
if true {
fmt.Println("true")
} else {
fmt.Println("false")
}
return
}
func main() {
return
}
执行结果:
switch语句:
switch i { // 左花括号"{"必须与switch处于同一行
case 0:
fmt.Printf("0")
case 1:
fmt.Printf("0")
case 2:
fallthrough
case 3:
fmt.Printf("3")
case 4,5,6:
fmt.Printf("multi")
default:
fmt.Printf("default")
}
- i=0时,输出0;
- i=1时,输出1;
- i=2时,输出3,fallthrough关键字表示继续执行下一个case;
- i=3时,输出3;
- i=4/5/6时,输出"multi",单个case后面可以出现多个结果项;
- i=其它任意值时,输出"default"。
例子:
package main
import (
"fmt"
)
func init() {
fmt.Println("Golang语言社区 www.Golang.LTD")
test(2)
return
}
func main() {
return
}
func test(i int) {
switch i {
case 0:
fmt.Println("0")
case 1:
fmt.Println("1")
case 2:
fallthrough
case 3:
fmt.Println("3")
case 4, 5, 6:
fmt.Println("multi")
default:
fmt.Println("default")
}
}
执行结果:
注意:
- Go语言不需要用break来退出一个case,只有在case中添加fallthrough关键字,才会继续执行紧跟的下一个case;
- 条件表达式不限制为常量或者整数,条件表达式甚至也可以没有,例如:
Num := 8
switch {
case 0<= Num && Num <=3:
fmt.Println("0-3")
case 4<= Num && Num <=6:
fmt.Println("4-6")
case 7<= Num && Num <=9:
fmt.Println("7-9")
}
当缺失条件表达式时,整个switch结构与多个if...else...的逻辑作用相同。
2、循环语句
Go语言的循环控制只支持for语句,不支持while结构。
for循环语句的循环表达式也不需要使用()括起来,例如:
sum := 0
for i:=0; i<10; i++ {
sum += i
}
for循环也支持continue和break语句,例如:
sum := 0
for {
sum ++
if sum>100 {
break
}
}
对于嵌套循环,break还可以选择中断哪个循环,例如:
var i int
var j int
JLoop:
for j=0; j<5; j++ {
for i=0; i<10; i++ {
if i>5 {
break JLoop
}
}
}
3、跳转语句
Go语言仍支持使用goto关键字在函数体内进行跳转,例如:
func foo() {
i := 0
HERE:
i++
if i<10 {
goto HERE
}
}
例子:
package main
import (
"fmt"
)
func init() {
fmt.Println("Golang语言社区 www.Golang.LTD")
test()
return
}
func main() {
return
}
func test() {
for i := 0; i < 10; i++ {
if i == 4 {
goto TaoZhuan
}
}
fmt.Println("为什么不执行我哪?")
TaoZhuan:
fmt.Println("跳转执行函数")
}
执行结果:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 通过 PHP 原生代码实现 HTTP 路由器
- MySQL组复制(MGR)全解析 Part 10 MGR新增节点
- 基于 gorilla/sessions 在 Go 语言中管理 Session
- 通过 PHP 原生代码实现 HTTP 控制器
- Go 视图模板篇(一):模板引擎的定义、解析与执行
- Mycat分库分表全解析 Part 6 Mycat 全局序列号
- 通过 PHP 原生代码实现视图模板引擎的解析和渲染
- [MySQL故障处理]记一次innobackupex导致的从库无法同步的问题
- [Oracle 故障处理]记一次DG数据文件无法创建的问题
- mysqldump命令详解 4-按条件备份表数据
- mysqldump命令详解 5-导出事件,函数和存储过程
- [Oracle集群软件全解析]Oracle Cluster Registry Utility 参考
- mysqldump命令详解 Part 8 其他的一些的参数的介绍
- mysqldump命令详解 Part 6- --master-data参数的使用
- 腾讯云语音识别.net-sdk使用笔记0818