流程控制——if,循环,for range,switch, goto,break,continue
1、if
格式:
if condition1 {
// do something
} else if condition2 {
// do something else
}else {
// catch-all or default
}
else if 分支的数量是没有限制的。关键字 if 和 else 之后的左大括号{
必须和关键字在同一行,如果你使用了 else if 结构,则前段代码块的右大括号}
必须和 else if 关键字在同一行,这两条规则都是被编译器强制规定的。
if 还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断。
示例:
package main import "fmt" func main() { if x := 0; x == 0 { fmt.Println("hello") } fmt.Println("world") }
2、循环
Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构。
使用循环语句时,注意以下几点:
- 左花括号
{
必须与 for 处于同一行。 - Go语言中的 for 循环与C语言一样,都允许在循环条件中定义和初始化变量,唯一的区别是,Go语言不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量。
- Go语言的 for 循环同样支持 continue 和 break 来控制循环,但是它提供了一个更高级的 break,可以选择中断哪一个循环。
3、for range
通过 for range 遍历的返回值有一定的规律:
- 数组、切片、字符串返回索引和值。
- map 返回键和值。
- 通道(channel)只返回通道内的值。
4、switch
1)基本写法
Go语言改进了 switch 的语法设计,case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行。
示例:
package main import "fmt" func main() { var str = "hello" switch str { case "hello": fmt.Println(1) case "world": fmt.Println(2) default: fmt.Println(0) } }
2)一分支多值
当出现多个 case 要放在一起的时候,不同的 case 表达式使用逗号分隔。
示例:
package main import "fmt" func main() { var str = "hello" switch str { case "hello", "world": fmt.Println(1) default: fmt.Println(0) } }
3)分支表达式
当case后跟的是表达式时,switch 后面不再需要跟判断变量。
示例:
package main import "fmt" func main() { r := 25 switch { case r > 10 && r < 20: fmt.Println("1") case r >= 20: fmt.Println("2") } }
5、goto
Go语言中 goto 语句通过标签进行代码间的无条件跳转。
示例:
package main import "fmt" func main() { for x := 0; x < 10; x++ { for y := 0; y < 10; y++ { if y == 2 { goto breakHere // 跳转到标签 } } } return breakHere: // 标签 fmt.Println("done") }
6、break
Go语言中 break 语句可以结束 for、switch 和 select 的代码块,另外 break 语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的 for、switch 和 select 的代码块上。
示例:
package main import "fmt" func main() { OuterLoop: for i := 0; i < 2; i++ { for j := 0; j < 5; j++ { switch j { case 2: break OuterLoop } fmt.Println(i, j) } } }
7、continue
Go语言中 continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用,在 continue 语句后添加标签时,表示开始标签对应的循环。
示例:
package main import "fmt" func main() { OuterLoop: for i := 0; i < 2; i++ { for j := 0; j < 5; j++ { switch j { case 2: continue OuterLoop } fmt.Println(i, j) } } }
原文地址:https://www.cnblogs.com/ACGame/p/11877275.html
- 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 数组属性和方法
- R语言进阶之时间序列分析
- Spring Boot 实现员工信息管理demo
- 如何把 Flutter 云端一体化做到极致?
- 微服务[学成在线] day16:基于Spring Security Oauth2开发认证服务
- 新的跨域策略:使用COOP、COEP为浏览器创建更安全的环境
- CVE-2020-1948:Dubbo Provider默认反序列化复现
- R语言进阶之因子分析
- Spring Boot 整合Thymeleaf
- Spring Boot 整合Shiro
- 微服务[学成在线] day01:CMS接口开发
- 微服务[学成在线] day02:CMS前端开发
- ggplot2| 绘制KEGG气泡图
- 微服务[学成在线] day03:CMS页面管理开发
- ggplot2|绘制GO富集柱形图
- 使用Prometheus监控Flink