流程控制语句

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

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. 源码分析 Alibaba sentinel 滑动窗口实现原理(文末附原理图)

    要实现限流.熔断等功能,首先要解决的问题是如何实时采集服务(资源)调用信息.例如将某一个接口设置的限流阔值 1W/tps,那首先如何判断当前的 TPS 是多少?Alibaba Sentinel 采用滑 ...

  2. [组件封装]微信小程序-图片批量上传照片墙

    描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...

  3. Django 处理跨域的配置、前台处理ajax

    一. Django处理跨域 跨域的处理方式有很多,使用最多的就是CORS(跨域资源共享),接下来大致提一下django中处理跨域的配置. 首先安装django-cors-headers模块: pip ...

  4. navicat使用、pymysql连接数据库

    内容回顾 select distinct 字段1,字段2,... from 表名 where 分组之前的过滤条件 group by 分组条件 having 分组之后过滤条件 order by 排序字段 ...

  5. http server部署discuz

    httpd服务器搭建discuz 第一步.数据库的配置 create database discuz; grant all privileges on discuz.* to 'discuz'@'lo ...

  6. JavaScript(9)--- 跨域

    JavaScript(9)--- 跨域 一.跨域原理(同源策略) 在项目搭建的初期,因为现在项目基本上都是前后端分离,所以不可避免地会遇到跨域问题,而造成跨域的罪魁祸首就是浏览器的同源策略.所以要解决 ...

  7. jvm:内存结构(堆、方法区、程序计数器、本地方法栈、虚拟机栈)

    1.jvm内存结构 静态编译:把java源文件编译成字节码文件class,这个时候class文件以静态方式存在. 类加载器:把java字节码文件加载到内存中 方法区:将字节码放到方法区作为元数据(简单 ...

  8. 计网-ping服务命令与ICMP协议

    目录 一.IP协议的助手 —— ICMP 协议(网络层协议) 二.ping —— 查询报文类型的使用 三.traceroute —— 差错报文类型的使用 参考:从Wireshark抓包软件角度理解PI ...

  9. HashMap中使用自定义类作为Key时,为何要重写HashCode和Equals方法

    之前一直不是很理解为什么要重写HashCode和Equals方法,才只能作为键值存储在HashMap中.通过下文,可以一探究竟. 首先,如果我们直接用以下的Person类作为键,存入HashMap中, ...

  10. Nutch & Solr & IKAnalyzer Deployment Debug

    Nutch配置错误 (1) IO错误   记得出错的时候把出错的目录删除,否则下次还是出错. (2) Command crawl is deprecated, please use bin/crawl ...