流程控制语句

计算机编程语言中,流程控制语句很重要,可以让机器知道什么时候做什么事,做几次。主要有条件和循环语句。

Golang只有一种循环:for,只有一种判断:if,还有一种特殊的switch条件选择语句。

一、条件语句

举个例子:

    // 判断语句
if a > 0 {
fmt.Println("a>0")
} else {
fmt.Println("a<=0")
}

a > 0时打印a>0,否则打印a<=0。其中条件a > 0不需要加小括号。

条件语句表示如果什么,做什么,否则,做什么。

几种判断形式为:

if a > 0{

}

只有if

if a > 0{

}else{

}

if以及else

if a > 0{

}else if a == 0 {

}else{

}

中间可混入else if

如果中间的条件太多的话,可以使用switch条件语句:

    num := 4

    switch num {
case 3:
fmt.Println(3)
case 4:
fmt.Println(4)
case 5:
fmt.Println(5)
default:
fmt.Println("not found")

这种语句会从case一个个判断,如果找到一个case符合条件,那么进入该case执行指令,否则进入default

上面num := 4将会进入case 4,打印数字4后结束。如果num := 5,将会打印数字5后结束。如果num := 8,会打印字符串 not found。

二、循环语句

循环语句:

    // 循环语句
for i := 9; i <= 10; i++ {
fmt.Printf("i=%d\n", i)
}

其中i是局部变量,循环第一次前被赋予了值9,然后判断是否满足i<=10条件,如果满足那么进入循环打印,每一次循环后会加1,也就是i++,然后继续判断是否满足条件。

形式为:

    for 起始状态; 进入循环需满足的条件; 每次循环后执行的指令 {
}

你也可以死循环:

    // 死循环语句
a = 0
for {
if a >= 10 {
fmt.Println("out")
// 退出循环
break
} a = a + 1
if a > 5 {
continue
} fmt.Println(a)
}

死循环直接for {},后面不需要加条件,然后当a>=10时跳出循环可以使用break,表示跳出for {},对于a > 5,我们不想打印出值,可以使用continue跳过后面的语句fmt.Println(a),提前再一次进入循环。

切片字典都可以使用循环来遍历数据:


e := []int64{1, 2, 3} // slice
f := map[string]int64{"a": 3, "b": 4} // map // 循环切片
for k, v := range e {
fmt.Println(k, v)
} // 循环map
for k, v := range f {
fmt.Println(k, v)
}

切片遍历出来的结果为:数据下标,数据,字典遍历出来的结果为:数据的键,数据的值:

0 1
1 2
2 3
3 3 a 3
b 4
f 5

系列文章入口

我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook

数据结构和算法(Golang实现)(3)简单入门Golang-流程控制语句的更多相关文章

  1. 数据结构和算法(Golang实现)(1)简单入门Golang-前言

    数据结构和算法在计算机科学里,有非常重要的地位.此系列文章尝试使用 Golang 编程语言来实现各种数据结构和算法,并且适当进行算法分析. 我们会先简单学习一下Golang,然后进入计算机程序世界的第 ...

  2. 数据结构和算法(Golang实现)(2)简单入门Golang-包、变量和函数

    包.变量和函数 一.举个例子 现在我们来建立一个完整的程序main.go: // Golang程序入口的包名必须为 main package main // import "golang&q ...

  3. 数据结构和算法(Golang实现)(4)简单入门Golang-结构体和方法

    结构体和方法 一.值,指针和引用 我们现在有一段程序: package main import "fmt" func main() { // a,b 是一个值 a := 5 b : ...

  4. 数据结构和算法(Golang实现)(5)简单入门Golang-接口

    接口 在Golang世界中,有一种叫interface的东西,很是神奇. 一.数据类型 interface{} 如果你事前并不知道变量是哪种数据类型,不知道它是整数还是字符串,但是你还是想要使用它. ...

  5. 数据结构和算法(Golang实现)(6)简单入门Golang-并发、协程和信道

    并发.协程和信道 Golang语言提供了go关键字,以及名为chan的数据类型,以及一些标准库的并发锁等,我们将会简单介绍一下并发的一些概念,然后学习这些Golang特征知识. 一.并发介绍 我们写程 ...

  6. 数据结构和算法(Golang实现)(7)简单入门Golang-标准库

    使用标准库 一.避免重复造轮子 官方提供了很多库给我们用,是封装好的轮子,比如包fmt,我们多次使用它来打印数据. 我们可以查看到其里面的实现: package fmt func Println(a ...

  7. Python 入门之流程控制语句

    Python 入门之流程控制语句 1.if判断 (1) 单 if if –-如果 if 条件: 缩进 结果 (官方推荐4个空格,或者一个tab 不能空格和tab混合使用) money = 10 pri ...

  8. CQRS简单入门(Golang)

    一.简单入门之入门 CQRS/ES和领域驱动设计更搭,故整体分层沿用经典的DDD四层.其实要实现的功能概要很简单,如下图. 基础框架选择了https://github.com/looplab/even ...

  9. Java数据结构和算法之数组与简单排序

    一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信 ...

随机推荐

  1. 推荐两款好用的JS格式化工具

    工具一: 直接在Chrome浏览器中,F12,打开Sources栏,找到JS文件,点击下面的花括号即可. 工具二: 使用notepad++ 格式化JS文件. 1.下载 jstool 插件(https: ...

  2. 「 Offer收割机之JVM」:生存还是毁灭

    这两天,广州的天气又开始热了起来,又到了小动物交配的季节,啊呸,又到了一个收割 offer 的季节.年底将至,又到了面试的高峰期,JVM 作为Java 程序员面试绕不过的一道坎儿,它又来了,你准备好了 ...

  3. python基础知识1——简介与入门

    什么是Python:Python能做什么:安装与更新:第一个Python程序:变量:pyc字节码:编码:条件和循环:Python运算符:算数,比较,赋值,位,逻辑::::::::::::::::::: ...

  4. 洛谷 P3909 异或之积 题解

    原题链接 本人看了其它解法,发现本人的解法还是 首创 ! 而且我的解法好像和 \(\times 6\) 没什么关系 -- (如果没 \(\times 6\),我没还不用算逆元) 别人的思路呢,大都是从 ...

  5. [转载]float 和 double 的一二三点事

    文章转载于博客园作者jillzhang,原文链接http://jillzhang.cnblogs.com/ .文章为jillzhang原创,转载条件请看原文链接. 关于浮点数精度和范围,请看末尾. C ...

  6. Android菜单(menu)

    Android  菜单 我们继续来进行学习,今天写一下在软件中用的还算较多的菜单. 1.Menu 菜单,很显然,作用就是点击不同的选项触发不同的方法.现在在安卓使用中推荐使用ActionBar,但这里 ...

  7. Thread wait notify sleep

    wait: 必须暂定当前正在执行的线程,并释放资源锁,让其他线程可以有机会运行 notify/notifyall: 唤醒因锁池中的线程,使之运行 wait与sleep区别 对于sleep()方法,我们 ...

  8. [noip模拟]食物中毒<暴搜+状压优化>

    问题描述 Bqc经过一段时间的研究发现,要解这种毒需要一种特殊的药物.不幸的是,这种药物在 市面上不存在,没有办法Bqc只好亲自制得这种药物.它含有M种化学物质A1,A2,…,AM.现 在Bqc的手上 ...

  9. Java 对象容器

    一.ArrayList 容器 1.记事本 package booknote; import java.util.ArrayList; public class NoteBook { private A ...

  10. 学习方法,学习方式By:ラピスラズリ(Dawn)20200407

    原创,转载请注明,谢谢!