Golang支持如下4种流程控制语句:

  1. 条件语句:if,else和else if
  2. 选择语句:switch,case和select
  3. 循环语句:for,range
  4. 跳转语句:goto

条件语句

示例代码:

a := 3
if a < 5 {
fmt.Println(a, "litter than 5")
} else {
fmt.Println(a, "not litter than 5")
}

关于条件语句,要注意以下几点:

  • 条件语句不要使用小括号()将条件包含起来
  • 不论语句体内有几条语句,花括号{}都是必须存在
  • 左花括号{必须与ifelse在同一行
  • if之后,条件语句之前,可以添加变量初始化语句,使用分号;分隔

选择语句

根据传入条件的不同,选择语句会执行不同的分支。

示例代码:

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("4, 5, 6")
default:
fmt.Println("default")
}

i = 0,输出:0

i = 1,输出:1

i = 2,输出:3

i = 3,输出:3

i = 4,输出:4, 5, 6

i = 5,输出:4, 5, 6

i = 6,输出:4, 5, 6

i = 其他值,输出:default

有意思的是,switch后面的表达式都不是必须的,如下示例:

switch { // switch关键字之后没有表达式
case i >= 0 && i <= 3:
fmt.Println("0-3")
case i >= 4 && i <= 6:
fmt.Println("4-6")
}

关于选择语句,注意一下几点:

  • 左花括号{必须与switch处于同一行
  • 条件表达式不限制为常量或整数
  • 单个case中,可以出现多个结果选项
  • 不需要使用break语句退出case
  • 只有在case中出现了关键字fallthrough,才会继续执行紧跟的下一个case
  • 可以不设置switch之后的条件表达式

循环语句

Golang中的循环语句只支持for关键字。

示例代码:

sum := 0
for i = 0; i < 10; i++ {
sum += 1
}

无限循环:

sum := 0
for {
sum++
if sum > 10 {
break
}
}

在循环语句的条件表达式中支持多重赋值:

a := []int{1, 2, 3, 4, 5, 6}
for i, j := 0, len(a) - 1; i < j; i, j = i + 1, j - 1 {
a[i], a[j] = a[j], a[i]
}

关于循环语句,注意以下几点:

  • 左花括号{必须与for在同一行
  • 支持使用continuebreak来控制循环

跳转语句

goto语句的语义非常简单,就是跳转到本函数内的某个标签。

示例语句:

// 如下使用goto语句实现了类似循环的效果
func gotoSample() {
i := 0
HERE:
fmt.Println(i)
i++
if i < 5 {
goto HERE
}
}

输出:

0
1
2
3
4

学习go语言编程之流程控制的更多相关文章

  1. GO语言学习——Go语言基础之流程控制一

    Go语言基础之流程控制 if else(分支结构) package main import "fmt" // if条件判断 func main(){ // age := 19 // ...

  2. C语言学习笔记(四) 流程控制

    流程控制 流程控制,说通俗一点就是程序代码执行的顺序.不管对于哪门语言来说,流程控制都是很重要的一部分内容: 流程控制的分类,可以分为三大类: 1.顺序 这个很好理解,顺序执行就是代码从上往下一行行的 ...

  3. Go语言基础之流程控制

    Go语言基础之流程控制 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”. Go语言中最常用额流程控制有if和for,而switch和goto主要是为了简化代 ...

  4. Go语言 数据类型,流程控制

    Go语言 数据类型,流程控制 人生苦短,Let's Go ! package main // 必须要有一个main包 import "fmt" func main() { fmt. ...

  5. Java编程基础——流程控制

    Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...

  6. GO学习-(7) Go语言基础之流程控制

    流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码. ...

  7. R语言学习4:函数,流程控制,数据框重塑

    本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...

  8. c语言学习笔记(4)——流程控制

    一.什么是流程控制 程序代码执行的顺序 流程控制分类 顺序执行 选择执行 定义 有选择的执行某些代码 分类 if switch 循环执行 定义 某些代码会被重复执行 分类 for while do w ...

  9. 如何轻松学习C语言编程!

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  10. python 学习之 基础篇三 流程控制

    前言: 一. python中有严格的格式缩进,因为其在语法中摒弃了“{}”来包含代码块,使用严格的缩进来体现代码层次所以在编写代码的时候项目组要严格的统一器缩进语法,一个tab按键设置为四个空格来缩进 ...

随机推荐

  1. [转帖]TiFlash DeltaTree 存储引擎设计及实现分析 - Part 1

    https://tidb.net/book/book-rush/features/tiflash-code/tiflash-deltatree TiFlash 是 TiDB 的分析引擎,是 TiDB ...

  2. vim 复制代码的方法

    之前vim 复制代码 总是格式变错乱了 尤其是yaml文件 有的还带注释 非常痛苦 今天早上查了下 原来处理的方式非常简单  增加一个参数就可以了 方法为 1. vim 打开一个文件 2.输入 :se ...

  3. React中函数组件与类组件的两种使用

    React 创建组件的两种方式 函数组件:使用js函数创建的组件 约定1:函数名称必须以大写字母开头 约定2:函数组件必须要有返回值. 如果返回值为null.表示不渲染任何内容. return nul ...

  4. css3只需一招,将网站变成灰色的

    今天大家在浏览B站,腾讯视频,等网站时,有没有发现一个现象,网站变成灰色的了. 是不是跟平常不一样了呢,这是因为今天(2020.4.4)是全国哀悼日, 所以网站这些就变成灰色的呢. 我去看了一下腾讯的 ...

  5. 大数据面试题集锦-Hadoop面试题(三)-MapReduce

    你准备好面试了吗?这里有一些面试中可能会问到的问题以及相对应的答案.如果你需要更多的面试经验和面试题,关注一下"张飞的猪大数据分享"吧,公众号会不定时的分享相关的知识和资料. 目录 ...

  6. python中,Microsoft Visual C++ 14.0 or greater is required问题解决方案

    今天在写一个小程序,安装依赖的时候发现这个问题,平时都是直接安装Visual Studio解决,但是这个安装太大了,所以解决看看怎么安装是最方便的,最容易解决的. 下面这个就是出现的问题: build ...

  7. vs code python(Pylance server) crash

    The Pylance server crashed 5 times in the last 3 minutes. The server will not be restarted. See the ...

  8. 小白学k8s(2)理解flannel网络

    理解flannel网络 简介 Kubernetes中的网络 flannel 总结 参考 理解flannel网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简 ...

  9. iOS转场之present与dismiss的使用

    present的使用方式 present只能是A present B , B present C , C present D这样的链式弹出. 不能A present B , A present C , ...

  10. Primo Ramdisk SCSI虚拟硬盘和Direct-IO虚拟硬盘

    Primo Ramdisk 使用不同的虚拟技术可创建两种类型的虚拟硬盘:SCSI 虚拟硬盘和 Direct-IO 虚拟硬盘. 本篇主要比较两者之间的差异. SCSI 虚拟硬盘遵循SCSI规范,行为上几 ...