摘要: 欢迎来到 Golang 系列教程的第 29 篇。 什么是 defer? defer 语句的用途是:含有 defer 语句的函数,会在该函数将要返回之前,调用另一个函数。这个定义可能看起来很复杂,我们通过一个示例就很容易明白了。 示例 上面的程序很简单,就是找出一个给定切片的最大值。largest 函 阅读全文
posted @ 2019-08-15 09:48 风一样自由419154 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 28 篇。 Go 通过接口来实现多态。我们已经讨论过,在 Go 语言中,我们是隐式地实现接口。一个类型如果定义了接口所声明的全部方法,那它就实现了该接口。现在我们来看看,利用接口,Go 是如何实现多态的。 使用接口实现多态 一个类型如果定义了接口的所有方法,那它 阅读全文
posted @ 2019-08-15 09:47 风一样自由419154 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 27 篇。 Go 不支持继承,但它支持组合(Composition)。组合一般定义为“合并在一起”。汽车就是一个关于组合的例子:一辆汽车由车轮、引擎和其他各种部件组合在一起。 通过嵌套结构体进行组合 在 Go 中,通过在结构体内嵌套结构体,可以实现组合。 组合的 阅读全文
posted @ 2019-08-15 09:46 风一样自由419154 阅读(671) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 26 篇。 Go 支持面向对象吗? Go 并不是完全面向对象的编程语言。Go 官网的 FAQ 回答了 Go 是否是面向对象语言,摘录如下。 可以说是,也可以说不是。虽然 Go 有类型和方法,支持面向对象的编程风格,但却没有类型的层次结构。Go 中的“接口”概念提 阅读全文
posted @ 2019-08-15 09:44 风一样自由419154 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 25 篇。 本教程我们学习 Mutex。我们还会学习怎样通过 Mutex 和信道来处理竞态条件(Race Condition)。 临界区 在学习 Mutex 之前,我们需要理解并发编程中临界区(Critical Section)的概念。当程序并发地运行时,多个  阅读全文
posted @ 2019-08-15 09:42 风一样自由419154 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 什么是 select? select 语句用于在多个发送/接收信道操作中进行选择。select 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,select 会随机地选取其中之一执行。该语法与 switch 类似,所不同的是,这里的每个 case 语句都是信道操作。我们好好看 阅读全文
posted @ 2019-08-15 09:41 风一样自由419154 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 23 篇。 什么是缓冲信道? 在上一教程里,我们讨论的主要是无缓冲信道。我们在信道的教程里详细讨论了,无缓冲信道的发送和接收过程是阻塞的。 我们还可以创建一个有缓冲(Buffer)的信道。只在缓冲已满的情况,才会阻塞向缓冲信道(Buffered Channel) 阅读全文
posted @ 2019-08-14 09:11 风一样自由419154 阅读(592) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 22 篇。 在上一教程里,我们探讨了如何使用 Go 协程(Goroutine)来实现并发。我们接着在本教程里学习信道(Channel),学习如何通过信道来实现 Go 协程间的通信。 什么是信道? 信道可以想像成 Go 协程之间通信的管道。如同管道中的水会从一端流 阅读全文
posted @ 2019-08-14 09:10 风一样自由419154 阅读(718) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到我们 Golang 系列教程的第 20 篇。 Go 是并发式语言,而不是并行式语言。在讨论 Go 如何处理并发之前,我们必须理解何为并发,以及并发与并行的区别。 并发是什么? 并发是指立即处理多个任务的能力。一个例子就能很好地说明这一点。 我们可以想象一个人正在跑步。假如在他晨跑时,鞋带突然 阅读全文
posted @ 2019-08-14 09:08 风一样自由419154 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 欢迎来到 Golang 系列教程的第 21 篇。 在前面的教程里,我们探讨了并发,以及并发与并行的区别。本教程则会介绍在 Go 语言里,如何使用 Go 协程(Goroutine)来实现并发。 Go 协程是什么? Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是轻量级线程。与 阅读全文
posted @ 2019-08-14 09:08 风一样自由419154 阅读(206) 评论(0) 推荐(0) 编辑