摘要: 欢迎来到 Golang 系列教程的第 32 篇。 什么是 panic? 在 Go 语言中,程序中一般是使用错误来处理异常情况。对于程序中出现的大部分异常情况,错误就已经够用了。 但在有些情况,当程序发生异常时,无法继续运行。在这种情况下,我们会使用 panic 来终止程序。当函数发生 panic 时 阅读全文
posted @ 2019-08-15 09:52 风一样自由419154 阅读(248) 评论(0) 推荐(0)
摘要: 欢迎来到 Golang 系列教程的第 31 篇。 在上一教程里,我们学习了 Go 中的错误是如何表示的,并学习了如何处理标准库里的错误。我们还学习了从标准库的错误中提取更多的信息。 在本教程中,我们会学习如何创建我们自己的自定义错误,并在我们创建的函数和包中使用它。我们会使用与标准库中相同的技术,来 阅读全文
posted @ 2019-08-15 09:50 风一样自由419154 阅读(533) 评论(0) 推荐(0)
摘要: 欢迎来到 Golang 系列教程的第 30 篇。 什么是错误? 错误表示程序中出现了异常情况。比如当我们试图打开一个文件时,文件系统里却并没有这个文件。这就是异常情况,它用一个错误来表示。 在 Go 中,错误一直是很常见的。错误用内建的 error 类型来表示。 就像其他的内建类型(如 int、fl 阅读全文
posted @ 2019-08-15 09:49 风一样自由419154 阅读(186) 评论(0) 推荐(0)
摘要: 欢迎来到 Golang 系列教程的第 29 篇。 什么是 defer? defer 语句的用途是:含有 defer 语句的函数,会在该函数将要返回之前,调用另一个函数。这个定义可能看起来很复杂,我们通过一个示例就很容易明白了。 示例 上面的程序很简单,就是找出一个给定切片的最大值。largest 函 阅读全文
posted @ 2019-08-15 09:48 风一样自由419154 阅读(458) 评论(0) 推荐(0)
摘要: 欢迎来到 Golang 系列教程的第 28 篇。 Go 通过接口来实现多态。我们已经讨论过,在 Go 语言中,我们是隐式地实现接口。一个类型如果定义了接口所声明的全部方法,那它就实现了该接口。现在我们来看看,利用接口,Go 是如何实现多态的。 使用接口实现多态 一个类型如果定义了接口的所有方法,那它 阅读全文
posted @ 2019-08-15 09:47 风一样自由419154 阅读(567) 评论(0) 推荐(0)
摘要: 欢迎来到 Golang 系列教程的第 27 篇。 Go 不支持继承,但它支持组合(Composition)。组合一般定义为“合并在一起”。汽车就是一个关于组合的例子:一辆汽车由车轮、引擎和其他各种部件组合在一起。 通过嵌套结构体进行组合 在 Go 中,通过在结构体内嵌套结构体,可以实现组合。 组合的 阅读全文
posted @ 2019-08-15 09:46 风一样自由419154 阅读(677) 评论(0) 推荐(0)
摘要: 欢迎来到 Golang 系列教程的第 26 篇。 Go 支持面向对象吗? Go 并不是完全面向对象的编程语言。Go 官网的 FAQ 回答了 Go 是否是面向对象语言,摘录如下。 可以说是,也可以说不是。虽然 Go 有类型和方法,支持面向对象的编程风格,但却没有类型的层次结构。Go 中的“接口”概念提 阅读全文
posted @ 2019-08-15 09:44 风一样自由419154 阅读(274) 评论(0) 推荐(0)
摘要: 欢迎来到 Golang 系列教程的第 25 篇。 本教程我们学习 Mutex。我们还会学习怎样通过 Mutex 和信道来处理竞态条件(Race Condition)。 临界区 在学习 Mutex 之前,我们需要理解并发编程中临界区(Critical Section)的概念。当程序并发地运行时,多个  阅读全文
posted @ 2019-08-15 09:42 风一样自由419154 阅读(219) 评论(0) 推荐(0)
摘要: 什么是 select? select 语句用于在多个发送/接收信道操作中进行选择。select 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,select 会随机地选取其中之一执行。该语法与 switch 类似,所不同的是,这里的每个 case 语句都是信道操作。我们好好看 阅读全文
posted @ 2019-08-15 09:41 风一样自由419154 阅读(235) 评论(0) 推荐(0)