go 入门之路
学习 go 语言的书
go 的一些基础特性
- Go 语言一个非常好的目标就是实现所谓的复杂事件处理(CEP).
- Go 语言是一门类型安全和内存安全的编程语言。虽然 Go 语言中仍有指针的存在,但并不允许进行指针运算。
- Go 语言的另一个目标是对于网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多核的计算机。
- 设计者通过 goroutine 这种轻量级线程的概念来实现这个目标。
- 通过 channel 来实现各个 goroutine 之间的通信。
- 他们实现了分段栈增长和 goroutine 在线程基础上多路复用技术的自动化。
- Go 语言没有类和继承的概念, 通过接口(interface)的概念来实现多态性。(混合型的语言,类型之间没有层级关系), 用Go的理念来思考
- Go 语言每半年发布一个主要版本,一般在每年的2月和8月。 落后两个版本就会停止维护。
学习第二步
阅读以下 Go 知名的免费教程:
第一本 《The Little Go Book》
* 短小精湛,涵盖 Go 的语言基础,一两个小时内即可阅读完毕,社区有 中文译本 。
第二本《The Way to Go》
* 备受好评的教程,深入浅出,基本上涵盖 Go 语言的方方面面。中文命名 《Go 入门指南》,前往阅读 ,与社区 Wiki 一样,不要求学会,但是适合在你学习的不同阶段重复学习的课程。
第三本《Go Web 编程》
* 使用 Go 做 Web 编程相关的课程。前往阅读。
-
可重用软件设计的五个原则, 并称之为 SOLID(英文首字母缩写)原则:
- 单一职责原则(Single Responsibility Principle)
- 尽量用简单的方法解决问题, A class should have one, and only one, reason to change.
- 鼓励您将功能,类型、方法结构化为具有自然内聚的包;类型属于彼此,函数服务于单一目的。
- 开放 / 封闭原则(Open / Closed Principle)
- Software entities should be open for extension, but closed for modification. 对扩展开放,但对修改是封闭的。
- 鼓励您使用嵌入将简单类型组合成更复杂的类型。
- 里氏替换原则(Liskov Substitution Principle)
- 两种类型表现出的行为使得调用者无法区分,则这两种类型是可替代的。
- 具有各种具体子类型的抽象基类的规范。
- 替换是 Go 接口的范围。
- 流行的做法是一个接口只包含一个方法。
- 接口隔离原则(Interface Segregation Principle)
- Clients should not be forced to depend on methods they do not use. 隔离功能完成其工作所需的行为的过程。
- 鼓励您根据接口而不是具体类型来表达包之间的依赖关系。通过定义小型接口,我们可以更加确信,实现将忠实地满足他们的契约。
- 依赖倒置原则(Dependency Inversion Principle)
- High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions.
- 在 Go 中,import graph 必须是非循环的。
- 依赖倒置原则鼓励您将特定的责任,沿着 import graph 尽可能的推向更高层级,推给 main package 或顶级处理程序,留下较低级别的代码来处理抽象接口。
- 鼓励您按照从编译时间到运行时间的时序,转移 package 所依赖的知识。在 Go 中,我们可以通过特定 package 使用的 import 语句的数量减少看到了这一点。
- interfaces let you apply the SOLID principles to Go programs, Go 程序的可维护性,更容易变更,将是他们决策的关键因素。
- 如何以精心设计,解耦,重用,最重要的是响应变化的方式设计 Go 程序。
- 优秀的软件,可组合的软件,易于更改的软件.
- 单一职责原则(Single Responsibility Principle)
-
内聚是描述代码片段之间自然相互吸引的特性。