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. [转帖]Region Merge Config

    TiKV replicates a segment of data in Regions via the Raft state machine. As data writes increase, a ...

  2. [转帖]大模型训练,英伟达Turing、Ampere和Hopper算力分析

    https://www.eet-china.com/mp/a219195.html 大 GPU 优势在于通过并行计算实现大量重复性计算.GPGPU即通用GPU,能够帮助 CPU 进行非图形相关程序的运 ...

  3. 【转帖】16.JVM栈帧内部结构-局部变量表

    目录 1.局部变量表(Local variables) 1.局部变量表(Local variables) 1.局部变量表也称为局部变量数组或本地变量表. 2.局部变量表定义为一个数字数组,主要用于存储 ...

  4. [转帖]Linux开发环境——SCL软件集

    一.SCL简介 1.SCL简介 SCL(Software Collections)是一个CentOS/RHEL Linux平台的软件多版本共存解决方案,为RHEL/CentOS  Linux用户提供一 ...

  5. [转帖]ls命令

    ls(list) 命令可以说是Linux下最常用的命令之一 #ls -l;列出文件的详细信息 #ll 以上两个命令一样,ll是ls -l的简写 #ls -al;列出目录下的所有文件,包括以 . 开头的 ...

  6. 下载 ingres-nginx

    https://quay.io/repository/kubernetes-ingress-controller/nginx-ingress-controller-arm64?tag=latest&a ...

  7. API架构风格对比:SOAP vs REST vs GraphQL vs RPC

    API架构风格对比:SOAP vs REST vs GraphQL vs RPC 最近一段时间关于GraphQL的讨论很多,一些项目中也相继用到了这种风格,但使用是否合理,是否存在杀鸡用牛刀这样的问题 ...

  8. 本地搭建playground

    本文主要是记录我搭建go playground的步骤. 1.安装docker 如果你使用的Ubuntu,docker的安装步骤可以参见这里,这是我之前写的在Ubuntu18.04下安装fabric,其 ...

  9. 深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、模型特点详细介绍

    深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt.Res2Net.Swin Transformer.Vision Transformer等模型结构.实现.模型特点详细介绍 1.ResNet ...

  10. 21.7 Python 使用Request库

    Request库可以用来发送各种HTTP请求,该框架的特点是简单易用,同时支持同步和异步请求,支持HTTP协议的各种方法和重定向.它还支持Cookie.HTTPS和认证等特性. Request库的使用 ...