上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 42 下一页
摘要: 27. 组合取代继承 Go 不支持继承,但它支持组合(Composition)。组合一般定义为“合并在一起”。汽车就是一个关于组合的例子:一辆汽车由车轮、引擎和其他各种部件组合在一起。 通过嵌套结构体进行组合 在 Go 中,通过在结构体内嵌套结构体,可以实现组合。 组合的典型例子就是博客帖子。每一个 阅读全文
posted @ 2021-06-28 16:28 Οo白麒麟оΟ 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 26. 结构体取代类 Go 支持面向对象吗? Go 并不是完全面向对象的编程语言。Go 官网回答了 Go 是否是面向对象语言,摘录如下。 可以说是,也可以说不是。虽然 Go 有类型和方法,支持面向对象的编程风格,但却没有类型的层次结构。Go 中的“接口”概念提供了一种不同的方法,我们认为它易于使用, 阅读全文
posted @ 2021-06-28 16:27 Οo白麒麟оΟ 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 25. Mutex 临界区 在学习 Mutex 之前,我们需要理解并发编程中临界区(Critical Section)的概念。当程序并发地运行时,多个 [Go 协程]不应该同时访问那些修改共享资源的代码。这些修改共享资源的代码称为临界区。例如,假设我们有一段代码,将一个变量 x 自增 1。 Copy 阅读全文
posted @ 2021-06-28 16:25 Οo白麒麟оΟ 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 24. Select 什么是 select? select 语句用于在多个发送/接收信道操作中进行选择。select 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,select 会随机地选取其中之一执行。该语法与 switch 类似,所不同的是,这里的每个 case 语句都 阅读全文
posted @ 2021-06-28 16:24 Οo白麒麟оΟ 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 23. 缓冲信道和工作池(Buffered Channels and Worker Pools) 什么是缓冲信道? 在[上一教程]里,我们讨论的主要是无缓冲信道。我们在[信道]的教程里详细讨论了,无缓冲信道的发送和接收过程是阻塞的。 我们还可以创建一个有缓冲(Buffer)的信道。只在缓冲已满的情况 阅读全文
posted @ 2021-06-28 16:23 Οo白麒麟оΟ 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 22. 信道(channel) 什么是信道? 信道可以想像成 Go 协程之间通信的管道。如同管道中的水会从一端流到另一端,通过使用信道,数据也可以从一端发送,在另一端接收。 信道的声明 所有信道都关联了一个类型。信道只能运输这种类型的数据,而运输其他类型的数据都是非法的。 chan T 表示 T 类 阅读全文
posted @ 2021-06-28 16:22 Οo白麒麟оΟ 阅读(66) 评论(0) 推荐(0) 编辑
摘要: Go 协程是什么? Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是轻量级线程。与线程相比,创建一个 Go 协程的成本很小。因此在 Go 应用中,常常会看到有数以千计的 Go 协程并发地运行。 Go 协程相比于线程的优势 相比线程而言,Go 协程的成本极低。堆栈大小只有若干 阅读全文
posted @ 2021-06-28 16:20 Οo白麒麟оΟ 阅读(162) 评论(0) 推荐(0) 编辑
摘要: Go 是并发式语言,而不是并行式语言。在讨论 Go 如何处理并发之前,我们必须理解何为并发,以及并发与并行的区别。 并发是什么? 并发是指立即处理多个任务的能力。一个例子就能很好地说明这一点。 我们可以想象一个人正在跑步。假如在他晨跑时,鞋带突然松了。于是他停下来,系一下鞋带,接下来继续跑。这个例子 阅读全文
posted @ 2021-06-28 16:18 Οo白麒麟оΟ 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 19. 接口(二) 实现接口:指针接受者与值接受者 在接口(一)上的所有示例中,我们都是使用值接受者(Value Receiver)来实现接口的。我们同样可以使用指针接受者(Pointer Receiver)来实现接口。只不过在用指针接受者实现接口时,还有一些细节需要注意。我们通过下面的代码来理解吧 阅读全文
posted @ 2021-06-28 16:16 Οo白麒麟оΟ 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 目录 什么是接口? 接口的声明与实现 接口的实际用途 接口的内部表示 空接口 类型断言 类型选择(Type Switch) 什么是接口? 在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为。接口只指定了对象应该做什么,至于如何实现这个行为(即实现细节),则由对象本身去确定。 在 Go 语言 阅读全文
posted @ 2021-06-28 16:15 Οo白麒麟оΟ 阅读(51) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 42 下一页