Go 分支流程
if/else
基本使用
if/else
应该是每个编程语言中都具备的基本分支结构。
需要注意的是if||else
与{
要放在同一行上,否则会抛出异常。
另外,当多个else if
出现时,不同分支只会执行一个。
if 表达式1 {
分支1
} else if 表达式2 {
分支2
} else{
分支3
}
如下,判断成绩的等级。
package main
import (
"fmt"
)
func main() {
var grades int8 = 82
if grades > 90{
fmt.Println("成绩优异")
}else if grades > 80{
fmt.Println("成绩不错")
}else if grades > 60{
fmt.Println("成绩及格")
}else if grades > 40 {
fmt.Println("成绩较差")
}else{
fmt.Println("建议退学")
}
}
作用域
if
分支代码块具有块级作用域。我们可以在执行if
时定义一个变量,该变量不能在块级作用域外使用。
注意:只能使用短变量的声明方式
package main
import (
"fmt"
)
func main() {
if grades := 82; grades > 90{
fmt.Println("成绩优异")
}else if grades > 80{
fmt.Println("成绩不错")
}else if grades > 60{
fmt.Println("成绩及格")
}else if grades > 40 {
fmt.Println("成绩较差")
}else{
fmt.Println("建议退学")
}
}
switch/case
基本使用
switch/case
可以让上述代码变得更加简洁。
同其他语言一样,一个switch
中只能有一个default
,default
通常放在最下面。
package main
import (
"fmt"
)
func main() {
var grades int8 = 82
switch{
case grades > 90 :
fmt.Println("成绩优异")
// 不需要进行break
case grades > 60 :
fmt.Println("成绩及格")
case grades > 40:
fmt.Println("成绩较差")
default:
fmt.Println("建议退学")
}
}
作用域
同样,switch
也拥有块级作用域。我们可以在switch
作用域内定义一个变量,该作用域外不能使用该变量。
package main
import (
"fmt"
)
func main() {
switch grades := 82; { // 注意结束的分号
case grades > 90:
fmt.Println("成绩优异")
// 不需要进行break
case grades > 60:
fmt.Println("成绩及格")
case grades > 40:
fmt.Println("成绩较差")
default:
fmt.Println("建议退学")
}
}
fallthrough
fallthrough
语法可以执行满足条件的case
的下一个case
,是为了兼容C
语言中的case
设计的。
package main
import (
"fmt"
)
func main() {
switch age := 18; { // 注意结束的分号
case age < 18:
fmt.Println("未成年")
case age >= 18:
fmt.Println("成年了")
fallthrough // 穿透,执行下一个case 无论是否为true
case age > 30:
fmt.Println("生活忙碌")
default:
fmt.Println("枯燥无味")
}
// 成年了
// 生活忙碌
}
for
索引循环
条件为true
循环,条件为false
则退出循环。
下面是使用索引循环对数组进行遍历。
package main
import (
"fmt"
)
func main() {
var arr = [...]string{"①","②","③","④","⑥"} // 定义string数组
for index := 0; index < len(arr); index++{
fmt.Println(index) // 打印索引值
fmt.Println(arr[index]) // 打印元素值
}
}
迭代变量
迭代变量可以在for
循环的外部定义,但是必须要使用;
进行占位。
package main
import (
"fmt"
)
func main() {
var arr = [...]string{"①","②","③","④","⑥"} // 定义string数组
var index int; // int类型默认为0
for ; index < len(arr); index++{
fmt.Println(index) // 打印索引值
fmt.Println(arr[index]) // 打印元素值
}
}
while循环
由于Go
语言中没有while
循环,所以while
循环可以用for
来进行完成。
具体的步骤就是省略迭代变量,省略结束条件。
package main
import (
"fmt"
)
func main() {
var counter int
for {
if counter >= 5 {
break
}
fmt.Printf("第%d次执行\n", counter+1)
counter++
}
}
for/range
普通的索引循环只能拿出索引,因此十分的不方便。此时可使用for/range
,迭代变量有两个。
第一个为索引值,第二个为元素本身。
package main
import (
"fmt"
)
func main() {
var arr = [...]string{"①", "②", "③", "④", "⑥"} // 定义string数组
for index, element := range arr{
fmt.Printf("索引值:%d\n", index)
fmt.Printf("元素值:%v\n", element)
}
}
退出循环
goto
当有多层循环嵌套时,可给一个代码块指定一个标签,当执行到该标签时,跳转到标签代码块。
package main
import (
"fmt"
)
func main() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 5 {
goto TAG
}
fmt.Println(j)
}
}
TAG:
fmt.Println("执行标签代码块")
return // 结束main函数
}
break
break
用于跳过本层循环。
package main
import (
"fmt"
)
func main() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 5 {
fmt.Println("跳过本层循环")
break
}
}
fmt.Println("执行外层循环")
break
}
fmt.Println("代码执行结束")
}
continue
continue
用于跳过本次循环。
package main
import (
"fmt"
)
func main() {
for i := 0; i < 10; i++ {
if i==5{
fmt.Println("跳过本次循环")
}else{
fmt.Println(i)
}
}
fmt.Println("代码执行结束")
}
Go 分支流程的更多相关文章
- 数据类型&分支流程控制(2)
1.数据类型 1.数据类型 局部变量:书写在方法中的变量: 全局变量:书写在类中,与方法平级的变量: -如果没有给变量赋初值 -全局变量会默认拥有一个初始值 -局部变量将没有初始值,这个时候不能使用这 ...
- Slickflow.NET 开源工作流引擎快速入门之三: 简单或分支流程代码编写示例
前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从请假流程,或分支模式来快速了解引擎代码的编写. 1. 创建或分支流程图形 或分支流程是常见的 ...
- Slickflow.NET 开源工作流引擎快速入门之二: 简单并行分支流程代码编写示例
前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从一个最简单的并行分支流程来示例说明,如何快速了解引擎代码的编写. 版本:.NET Core2 ...
- python的单、双、多分支流程控制
if流程控制总结: 1.当满足条件时,执行满足条件的代码. 2.当执行完if语句内代码,程序继续往下执行. 单分支: if 条件成立,执行满足条件的代码 如下: if a>50: print(' ...
- C语言 第四章 关系、逻辑运算与分支流程控制
一.关系运算 若干表达式用关系运算符连接而成,就构成关系表达式. 关系表达式中,表达式成立,其值为1(真):表达式不成立,其值为0(假).其他表达式中,其结果如果是非0则为真,结果为0则为假. 关系运 ...
- C语言 第三章 关系、逻辑运算与分支流程控制
目录 一.关系运算 二.逻辑运算 三.运算优先级 四.if语句 4.0.代码块 4.1.单if语句 4.2.if else 4.3.多重if 4.4.?号:号表达式 五.switch语句 一.关系运算 ...
- JavaScript-----6.流程控制:分支
1.流程控制 就是来控制代码按照何种顺序来执行,流程控制有三种结构:顺序结构.分支结构.循环结构 2.顺序流程控制 程序按照代码先后顺序依次执行 3.分支流程控制 JS中提供两种分支结构语句:if语句 ...
- JavaScript 流程控制-分支
JavaScript 流程控制-分支 1.流程控制 在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的,很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能. 简单理解:流程控 ...
- Sql Server系列:流程控制语句
T-SQL中用来编写流程控制模块的语句有:BEGIN...AND语句.IF...ELSE语句.CASE语句.WHILE语句.GOTO语句.BREAK语句.WAITFOR语句和RETURN语句. 1 B ...
随机推荐
- oracle读取ip_num用uint32_t接收,出错及解决
start_ip_num = rset->getNumber(1); end_ip_num = rset->getNumber(2);2988 info_log("GetIpLi ...
- 替换unimrcp的VAD模块
摘要: unimrcp vad 模块voice activity dector一直认为比较粗暴,而且unimrcp的社区也很久没有更新了.使用原始unimrcp如果只是用来做Demo演示,通过手动调整 ...
- PHP 日期与时间函数详解
在开发过程中,我们经常碰到日期与时间戳相关的功能,今天趁此机会做个详细笔记. date_default_timezone_set('PRC'); /*把时间调到北京时间,php5默认为格林威治标准时间 ...
- 如何成为一位合格的ScrumMaster
嗨,大家好,我是叶子 ScrumMaster的职责简单理解为:确保团队按照scrum的方式运行,团队的教练,帮助团队更好的工作,过程中的执行者,能够在team和po之间平衡.移除项目进度的障碍,保护团 ...
- 【转】mac上安装gradle
http://www.douban.com/note/311599602/ 首先,先download最新版本的gradle,网址如下:http://www.gradle.org/get-started ...
- webpack 多页面构建
目标: 基于webpack支持react多页面构建(不用gulp,gulp-webpack 构建速度太慢[3]), generator-react-webpack 对单页面支持很好,但对多页面,需要改 ...
- php中的加密解密模块-mcrypt
<?php /* 打开加密算法和模式 */ $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); /* 创建初始向量,并且检测密钥长度 ...
- NutUI 视频组件开发心得
引子 说到在项目中引入一个视频,我们肯定会想到 HTML5 为我们提供的 Video 标签,它为我们提供了许多属性和方法,使用起来很方便,当然直接使用也会遇到各种兼容问题,在最初学习 Video 标签 ...
- 高可用集群corosync+pacemaker之pcs安装使用
前文我们介绍了高可用集群corosync+pacemaker的集群管理工具crmsh的常用命令的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/tag/crms ...
- Python 零基础快速入门!
“人生苦短,我学python”是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十分快速的.编程理念都 ...