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中只能有一个defaultdefault通常放在最下面。

  

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 分支流程的更多相关文章

  1. 数据类型&分支流程控制(2)

    1.数据类型 1.数据类型 局部变量:书写在方法中的变量: 全局变量:书写在类中,与方法平级的变量: -如果没有给变量赋初值 -全局变量会默认拥有一个初始值 -局部变量将没有初始值,这个时候不能使用这 ...

  2. Slickflow.NET 开源工作流引擎快速入门之三: 简单或分支流程代码编写示例

    前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从请假流程,或分支模式来快速了解引擎代码的编写. 1. 创建或分支流程图形 或分支流程是常见的 ...

  3. Slickflow.NET 开源工作流引擎快速入门之二: 简单并行分支流程代码编写示例

    前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从一个最简单的并行分支流程来示例说明,如何快速了解引擎代码的编写. 版本:.NET Core2 ...

  4. python的单、双、多分支流程控制

    if流程控制总结: 1.当满足条件时,执行满足条件的代码. 2.当执行完if语句内代码,程序继续往下执行. 单分支: if 条件成立,执行满足条件的代码 如下: if a>50: print(' ...

  5. C语言 第四章 关系、逻辑运算与分支流程控制

    一.关系运算 若干表达式用关系运算符连接而成,就构成关系表达式. 关系表达式中,表达式成立,其值为1(真):表达式不成立,其值为0(假).其他表达式中,其结果如果是非0则为真,结果为0则为假. 关系运 ...

  6. C语言 第三章 关系、逻辑运算与分支流程控制

    目录 一.关系运算 二.逻辑运算 三.运算优先级 四.if语句 4.0.代码块 4.1.单if语句 4.2.if else 4.3.多重if 4.4.?号:号表达式 五.switch语句 一.关系运算 ...

  7. JavaScript-----6.流程控制:分支

    1.流程控制 就是来控制代码按照何种顺序来执行,流程控制有三种结构:顺序结构.分支结构.循环结构 2.顺序流程控制 程序按照代码先后顺序依次执行 3.分支流程控制 JS中提供两种分支结构语句:if语句 ...

  8. JavaScript 流程控制-分支

    JavaScript 流程控制-分支 1.流程控制 在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的,很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能. 简单理解:流程控 ...

  9. Sql Server系列:流程控制语句

    T-SQL中用来编写流程控制模块的语句有:BEGIN...AND语句.IF...ELSE语句.CASE语句.WHILE语句.GOTO语句.BREAK语句.WAITFOR语句和RETURN语句. 1 B ...

随机推荐

  1. oracle读取ip_num用uint32_t接收,出错及解决

    start_ip_num = rset->getNumber(1); end_ip_num = rset->getNumber(2);2988 info_log("GetIpLi ...

  2. 替换unimrcp的VAD模块

    摘要: unimrcp vad 模块voice activity dector一直认为比较粗暴,而且unimrcp的社区也很久没有更新了.使用原始unimrcp如果只是用来做Demo演示,通过手动调整 ...

  3. PHP 日期与时间函数详解

    在开发过程中,我们经常碰到日期与时间戳相关的功能,今天趁此机会做个详细笔记. date_default_timezone_set('PRC'); /*把时间调到北京时间,php5默认为格林威治标准时间 ...

  4. 如何成为一位合格的ScrumMaster

    嗨,大家好,我是叶子 ScrumMaster的职责简单理解为:确保团队按照scrum的方式运行,团队的教练,帮助团队更好的工作,过程中的执行者,能够在team和po之间平衡.移除项目进度的障碍,保护团 ...

  5. 【转】mac上安装gradle

    http://www.douban.com/note/311599602/ 首先,先download最新版本的gradle,网址如下:http://www.gradle.org/get-started ...

  6. webpack 多页面构建

    目标: 基于webpack支持react多页面构建(不用gulp,gulp-webpack 构建速度太慢[3]), generator-react-webpack 对单页面支持很好,但对多页面,需要改 ...

  7. php中的加密解密模块-mcrypt

    <?php /* 打开加密算法和模式 */ $td = mcrypt_module_open('rijndael-256', '', 'ofb', ''); /* 创建初始向量,并且检测密钥长度 ...

  8. NutUI 视频组件开发心得

    引子 说到在项目中引入一个视频,我们肯定会想到 HTML5 为我们提供的 Video 标签,它为我们提供了许多属性和方法,使用起来很方便,当然直接使用也会遇到各种兼容问题,在最初学习 Video 标签 ...

  9. 高可用集群corosync+pacemaker之pcs安装使用

    前文我们介绍了高可用集群corosync+pacemaker的集群管理工具crmsh的常用命令的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/tag/crms ...

  10. Python 零基础快速入门!

    “人生苦短,我学python”是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十分快速的.编程理念都 ...