第 4 章 流程控制方法

在上一章中,我们介绍了Go语言的词法、数据类型以及数据的使用方法,它们都是我们编写程序的根基。在本章,我们将讲述怎样编写成段的甚至是小有规模的代码。在这样的代码中,各种流程控制语句会是我们经常用到的。它们可以制造出各种条件判断、各种循环和各种流程跳转。除此之外,我们还会详细介绍Go语言中与众不同的特殊流程控制方式。

Go语言在流程控制结构方面有些像C语言,但是在很多重要方面都与C不同。Go语言在这方面的特点如下。

  • 在Go语言中没有dowhile循环,只有一个更加广义的for语句。

  • Go语言中的switch语句更加灵活多变。Go语言的switch语句还可以被用于进行类型判断。

  • for语句类似,Go语言中的if语句和switch语句都可以接受一个可选的初始化子语句。

  • Go语言支持在break语句和continue语句之后跟一个可选的标记(Label)语句,以标识需要终止或继续的代码块。

  • Go语言中还有一个类似于多路转接器的select语句。

  • Go语言中的go语句可以被用于灵活地启用Goroutine。

  • Go语言中的defer语句可以使我们更加方便地执行异常捕获和资源回收任务。

另外,在这些语句的构成和语法方面,Go语言也有一些独到之处。我们会在后面一一揭晓。

与前面的章节不同,我们把本章的后面几节设置为了本章的实战环节。我们将会利用之前讲到的知识和方法去解决几个实际问题,以初步达到学有所用的目的。此外,通过对这几个实际问题的剖析和解决,我们还会得到几个在当前Go语言及其标准库中并未提供的高级数据类型(或者说高级数据结构),这会为我们今后的编程提供一定的便利。